LinuxでSVGをPDFに変換するにはどうすればいいですか

LinuxでSVGをPDFに変換するにはどうすればいいですか

Linux で SVG (数語のラテン語テキストといくつかの簡単なベクター グラフィックを含む) を PDF に変換するにはどうすればよいですか?

Ubuntu Lucid で Inkscape 0.47 を試してみましたが、一部のサブグラフィックがランダムに移動し、出力 PDF の一部の行が短くなります。そのため、グラフィックがまったく異なるように見えるため、出力は役に立ちません。

Google Chrome 16 で SVG を開いて PDF に印刷しようとしましたが、すべての色が歪んでしまい、一部の要素も削除されてしまいます。(SVG は画面上では問題なく表示されますが、印刷プレビューではすでに不良であり、生成された PDF も不良です)

SVG をラスタライズしたりレンダリングしたりしたくありません。SVG をビットマップ画像に変換し、画像を埋め込んだ PDF を作成するという解決策は、私の質問に対する答えではありません。(参考までに、Inscape 0.47 は PNG にレンダリングするときに、アンチエイリアスなしでテキストを非常に醜い方法でレンダリングします)

他に選択肢はありますか?

答え1

rsvg 変換変換したい SVG の場合は次のようにしました:

$ sudo apt-get install librsvg2-bin
$ rsvg-convert -f pdf -o t.pdf t.svg

rsvg-convert -f pdfSVG をラスタライズせず、フォントを埋め込んでサブセット化します (少なくとも Arial フォントの使用文字は埋め込まれています)。フォントの埋め込みが失敗する場合もあります (例: LMRoman17 フォント)。その場合、生成された PDF にフォント ファイル全体がコピーされます。

Ubuntu Lucid への依存関係:

  • libcairo.so.2
  • libgobject-2.0.so.0
  • libgthread-2.0.so.0
  • libglib-2.0.so.0
  • librsvg-2.so.2
  • libpthread.so.0
  • libc.so.6

デフォルトでは、libcairo には libX11 が必要なので、rsvg-convert をヘッドレス システムにインストールするのは難しいかもしれません。

注記: のマニュアル ページには、rsvg-convertツールは常にラスタライズすると記載されていますが、これは正しくありません。マニュアルが単に時代遅れになっているだけです。SVG 生成ツールが SVG イメージを部分的にラスタライズすることがあり、これも誤解を招く可能性があります。

答え2

これはUbuntu Lucidで動作します:

$ sudo apt-get install inkscape
$ inkscape t.svg --export-pdf=t.pdf

上記のコマンドライン Inkscape 呼び出しは、GUI なしのヘッドレス モードでも機能します ( DISPLAY=)。ただし、Inscape をインストールすると、X11 を含む多くの依存関係がインストールされます。

エラーが発生した場合でも、Inskscape の終了ステータスは常に 0 になることに注意してください。そのため、stderr に注意してください。

inkscape --shellまた、多数のドキュメントを一括で変換するのに適した もあります。これにより、各ファイルの Inkscape の起動時間が遅くなるのを回避できます。

$ (echo t.svg --export-pdf=t.pdf;
   echo u.svg --export-pdf=u.pdf) |
  DISPLAY= inkscape --shell

Inkscape は SVG を簡素化するのにも役立ちます。

$ DISPLAY= inkscape t.svg --export-plain-svg=t.plain.svg

答え3

私は OSX と Ubuntu で CairoSVG を正常に使用しました。

pip install cairosvg
cairosvg in.svg -o out.pdf

CairoSVG ドキュメント

答え4

Inkscape (0.47 も) から PDF に印刷したり、PDF として保存したり (若干異なりますが) すると良い結果が得られますが、これは手元のグラフィックによって異なる可能性があります。

解像度を低くした代替案(解像度を上げるためのスイッチは試していません)は

 convert file.svgz file.pdf 

convertはパッケージの一部ですImageMagick。Rasterizer は別のプログラムです。

 rasterizer -m application/pdf file.svgz -d file.pdf 

システムにインストールされているSVG処理プログラムを確認するには、

 apropos -s 1 svg

これらのプログラムのマニュアルページには、プログラムが SVG を PDF に変換するのに役立つかどうかが説明されている必要があります。

関連情報