変換 – どのように私はLinux上でPDFにSVGを変換します

conversion png svg

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

Ubuntu LucidでInkscape 0.47を試してみたのですが、一部のサブグラフィックがランダムに移動してしまい、出力されるPDFでは何行か短くなってしまいます。なので、グラフィックが全く違って見えるので、出力しても意味がありません

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

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

他にどんな選択肢がありますか?

  141  pts  2012-01-22


ベストアンサー

変換したいSVGはrsvg-convertでうまくいきました

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

rsvg-convert -f pdfはSVGをラスタライズせず、フォントを埋め込んだりサブセットしたりしています(少なくとも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画像を部分的にラスタライズすることがありますが、これも誤解を招く可能性があります

150  pts  2012-01-22


これはUbuntu Lucidで動作します

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

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

Inskscapeの終了ステータスはエラーが発生しても常に0であることに注意してください

また、多くの文書を一括で変換するのに適した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

96  pts  2012-11-16


私はOSXとUbuntuでCairoSVGをうまく使っています

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

CairoSVG のドキュメント

13  SYK  2014-12-21


Inkscape(0.47も)からPDFに印刷したり、PDFとして保存したり(ちょっと違うけど)すると良い結果が得られるのですが、これは手元のグラフィックにもよるかもしれませんね

解像度を下げた代替品(改善するためのスイッチは何も試していない)があります

 convert file.svgz file.pdf

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

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

svgsを扱うプログラムがシステムにインストールされているかどうかを調べるには、試してみてください

 apropos -s 1 svg

これらのプログラムのためのマニュアルページは、プログラムがsvgをpdfに変換するために有用かどうかを説明する必要があります

9  user unknown  2012-01-22


https://superuser.com/a/79064/19956ではGhostPDLの一部であるgsvgについて言及しています

Ubuntu Lucidでgsvg ghostpdl-9.06を試してみましたが、Inkscapeで生成された2つのSVGで失敗しました。1つのSVGにはテキストが含まれていて、もう1つのSVGにはベクターグラフィックのみが含まれていました。また、Inkscapeの拡張機能やクリップパスのないシンプルなグラフィックでも失敗しました。ですから、私は gsvg が使える SVG-to-PDF コンバータだとは思っていません

5  pts  2012-11-16


Mac OSでは(すでにBrewがインストールされていることを考えると)私はそうしています

$ brew install cairo libffi python3
$ pip3 install cairosvg

$ cairosvg -o blah.pdf ./blah.svg

Linuxでも同じように動作するはずですが、代わりにapt-getを使ってください

3  Adriel Jr  2018-07-27


なぜ今まで言及されていないのか不思議ですが、私は様々なsvg->pdfコンバータを試してみましたが、一番良いのはHeadless Chromeだと分かりました。これは私のために最も正確な結果を生成します。Chromeに切り替える前は、Inkscapeのバグと闘っていましたが、その多くは深刻すぎて、あまり手がつけられません(透明度のバグ、間違ったフォントなど)

 chrome --headless --disable-gpu --print-to-pdf="output.pdf" "input.svg"

それはカスタムPDFサイズ(A4がデフォルト)を使用するためにいくつかの調整が必要ですが、私はいくつかのググってCSSとSVG属性(この回答をチェックアウト stackoverflow)で遊んだ後にカスタムサイズを設定することができました

3  Avael Kross  2019-07-02


驚くべき解決策、アバエル・クロス(https://superuser.com/users/1057244/avael-kross)!ヘッドレスクロームは私のために素晴らしい仕事をしました

出力されたPDFからヘッダーとフッターを削除してSVGのサイズに収まるようにする手順を自動化してみました。シェルスクリプトをアップロードしたのは、以下のgistです

svg2pdf.bash。https://gist.github.com/s417-lama/84bf66de1096c4587e8187092fb41684

Usage:

$ ./svg2pdf.bash input.svg output.pdf

2  s417-lama  2020-04-29


ここで紹介されているツールの多くは、SVG 1.1を表示する際に問題があります。そのため、以下のような回避策を用いました

  1. ほとんどのブラウザはSVGを表示するのに最適なようです。FirefoxとChromeはSVG 1.1に完全対応しています。ブラウザでSVGを表示しただけです
  2. その後、PDFにページを印刷しながら:
    • 画像をページにフィットさせる
    • すべてのページのボーダーを 0 に設定します
    • ヘッダとフッタはすべて空にしておきます
  3. あらかじめ定義されたページサイズとの違いができないので、その後にpdfcropを使用して、SVGの正確な寸法のPDFを取得しました

1  Thomas  2020-10-26


svgファイルをImage Viewer(Eye of Gnome eogとも呼ばれています)で開き、それをPDFファイル(image.pdfとします)に印刷し、そのPDFをpdf2psコマンドを使ってepsに変換します。簡単です

Elaborated steps:

  1. Image Viewerをインストールしていない場合は、Image Viewerをインストールしてください (gnomeを使っている場合は可能性が低いステップです)

    sudo apt-get install eog
    
  2. svgファイルをeogで開き、image.pdfファイルに印刷します

  3. (オプシ ョ ナル) pdf フ ァ イ ルから周囲の空白を除去

    pdfcrop image.pdf
    

    これは、周囲の空白を取り除いたimage-crop.pdfを生成します

  4. あなたがpdfをトリミングしていない場合は、直接image.pdfを使用して)epsにトリミングしたpdfを変換します

    pdf2ps image-crop.pdf image.eps
    

Thats it!

0  codeman48  2017-11-05


タイトルとURLをコピーしました