DockerでのdocファイルPDF変換時のページがずれ問題

失礼します。

[課題内容]
私たちのプロジェクトでは、doc/docxの内容をOCRにかけて、wordドキュメント内のテキスト、画像内テキスト、図形内テキストのすべてをデータベースに登録したいと考えています。その際、一旦doc/docxをPDFに変換する必要があり、それについてLibreOfficeをCLIで用いています。

その上で、現状Dockerコンテナ環境上で、Wordファイル(Doc, Docx)をLibreOfficeでPDF変換する際に、元ファイルにおけるページ構成の状態と異なる出力になってしまうことが確認されています。

これを解消するための、コマンドラインオプションや、Docker環境内でのマクロの適用の仕方をご教示頂ければ幸いです。あるいは、当該の事象がLibreOfficeのバグによって発生するものであり、LibreOffice以外のソースを使った方が良いのかについても教えて頂ければ幸いです。

[現状について]

  • WSLのUbuntu環境で、LibreOffice 24.2.5.2を使用しており、こちらでは検証用docファイルに対して、一応望ましい出力がされている
  • 元docファイルのフォントはすべて、MS 明朝。対して、WSL内で変換したPDFは日本語文字がIPA 明朝・数字がDejaVu Sans。Dockerコンテナ内で変換したPDFは日本語文字がIPA 明朝・数字がNoto Sans
  • WSL内PDFはLine Spacing(行間幅)が1.7であるのに対して、Docker内PDFは1.92。元docファイルは1.16(等倍率の長さがそもそもpdfとdocでは違う可能性あり)
  • Docker環境内のLibreOfficeもDockerfileから24.2.5.2をインストール。
  • WSL内の/usr/share/fonts内のフォントはDocker内にコピー済み
  • WSL内のLibreOfficeの設定ファイル(~/.config/libreoffice/)はDocker内にコピー済み
  • registrymodifications.xcuなどでNoto SansフォントをDejaVu Sansに置き換える設定などを記述したが出力結果は変わらず
  • 数字のフォントを一律でDejaVu Sansにするbasicマクロを組み、Docker内の/root/.config/libreoffice/4/user/Scripts/basic/下に配置して、マクロを呼びながらPDF化のコマンドを叩いたが、コマンド自体はエラーメッセージ等出力されなかったが、マクロが実行された形跡がない。別にマクロが正常に動作しているかを確認するための簡易なマクロを組み、そちらも実行したがやはり何も出力がされない。

質問文自体が長くなってしまうため、Dockerfileの記述どのようにしているかなどは適宜コメントに返信する形をとりたいと思います。

[検証用ファイル]

(new users can post 2 links というコメントが出たので、PDFに関しては改めてコメントで貼ります。)

[出力PDF]

Dockerは触ったことないですが、
元のdocファイルのフォント
「MS P明朝」「Aptos」をIPA明朝やDejavuに置き換える設定になっていますか?

コメント下さりありがとうございます。

WSL上のUbuntuでPDF変換を行うと、デフォルトでIPA明朝とDejaVu Sansに変わるようです。

確認した所、元ファイルの文書内の文字はMS明朝が使われているのですが、デフォルトのフォント設定は、日本語が游ゴシック、英数字がAptosのようです。

PDFの方は、WSLのUbuntu上では、日本語がIPA明朝、英数字がDejaVu Sansになります。

WSL上のLibreOfficeで[ツール]>[オプション] [LibreOffice]>[フォントの種類]で
下記のように設定して
fonttable

registrymodifications.xcuをDockerにコピーしても変わりませんか?

1 Like

ご教示頂いた内容で検証用ファイルに対してDocker内でもうまくPDF変換できました!

ありがとうございます。

ファイルが逆でした。

上がDocker内PDFで、下がWSL内PDFです

失礼します。解決したかと思ったのですが、早合点でした。
フォントに関しては元ファイルに対して一律にIPA P明朝が適用されるようになり、それ自体は望ましいのですが、今度は行間幅が元docファイルに比べて小さくなり、文字の行が繰り上がってしまうようになりました。

registrymodifications.xcuの方で元docファイルと同様の行間幅を設定する方法などございますでしょうか?

verify_doc.doc (31 KB)
verify_doc.pdf (15.8 KB)