web-dev-qa-db-ja.com

pptxからpdfへの変換でのLibreOfficeコマンドラインフォントの置換

質問

コマンドライン経由でlibreofficeを指定して、ユーザー操作なしでPDF世代のCambriaの発生にCalibriを使用する方法はありますか?

コンテキスト

私はこのコマンドを使用しています:

libreoffice --headless --invisible --convert-to pdf --outdir images/output/ images/Mockups.pptx

またはこれ:

unoconv -f pdf -o images/output/ images/Mockups.pptx

PPTX実行中ubuntu/trusty64で起動されたPDFマシンでvirtualboxvagrantに自動的に変換します。

Vagrantfile:

config.vm.box = "ubuntu/trusty64"
[...]
config.vm.provision "Shell", inline: <<-Shell
    Sudo apt-get update
    Sudo apt-get install -y unoconv imagemagick default-jdk ant docbook-xsl fop libxml2-utils xsltproc php5-cli
Shell

元のpptxは、ウィンドウを使用している人々によって編集され、Calibriフォントを使用します。別の設定やフォントを使用するように要求することはできません。

Calibriフォントはtrustyディストリビューションに含まれていないため、PDFによって行われたlibreoffice変換はレイアウトを台無しにします。

CambriaCalibriと同等です。

したがって、前述のように、問題は、コマンドラインを介して特定のフォント置換のlibreofficeを指示する方法です。

3
Xavi Montero

pptxファイル形式は、異なる拡張子を持つ単なるZipファイルです。これを解凍して、テキスト置換を実行できます。

unzip -d tmp Mockups.pptx
find tmp -type f | xargs sed -i 's/Calibri/Cambria/g'
( cd tmp; Zip -r ../Mockups2.pptx . )
rm -Rf tmp
2
krlmlr

AlfrescoのLibreOfficeでも同様の問題が発生しました(これもヘッドレスで実行されます)。 Carlito(Calibriと同等)およびCaladea(Cambriaと同等)のChromeOSフォントパッケージをインストールすると、ここからのヒントを使用して修正されました: https://wiki.debian.org/SubstitutingCalibriAndCambriaFonts 。 LO内のマッピングを変更しても、ヘッドレスでもデスクトップでも何も起こりませんでした。パッケージをインストールするだけで解決しました。 (完全を期すために、LOレジストリmodifications.xcuにマッピングのエントリを追加しましたが、どちらのプラットフォームでも何も達成されませんでした-conf.dの下のファイルの編集が優先されるようです)。

インストールされたパッケージ:

注:以下の$はシステムプロンプトです...

Linux:

$ Sudo apt-get install fonts-crosextra-carlito fonts-crosextra-caladea

FreeBSD:(ヒント:名前は時間とともに変化する可能性があるため、最初に検索を実行してください)

$ pkg検索cros

$ sudo pkg install crosextrafonts-caladea-20130214_1 crosextrafonts-carlito-20130920_2

以下を実行する必要がある場合があります。

$ fc-cache -r

確認する:

$ fc-match Calibri

Carlito-Regular.ttf:「Carlito」「Regular」

$ fc-matchカンブリア

Caladea-Regular.ttf:「Caladea」「Regular」

今完璧に動作します。

これらのインストールにより、次のファイルが作成されます。これらのファイルは、目的のフォントの置換を提供します(プラットフォームに応じて)

Linux(Ubuntu 14.x):

/etc/fonts/conf.avail/30-0-google-crosextra-caladea-fontconfig.conf

/etc/fonts/conf.avail/30-0-google-crosextra-carlito-fontconfig.conf

これらは/etc/fonts/conf.dから次のようにリンクされています。

30-0-google-crosextra-caladea-fontconfig.conf-> ../conf.avail/30-0-google-crosextra-caladea-fontconfig.conf

30-0-google-crosextra-carlito-fontconfig.conf-> ../conf.avail/30-0-google-crosextra-carlito-fontconfig.conf

FreeBSD(10.x):

/usr/local/etc/fonts/conf.avail/30-metric-aliases.conf

...リンクされたアラ...

/usr/local/etc/fonts/conf.d/30-metric-aliases.conf@-> /usr/local/etc/fonts/conf.avail/30-metric-aliases.conf