にせねこメモ

はてなダイアリーがUTF-8じゃないので移ってきました。

Python 3.4 でSVGからPDF作成

SVG ファイルから PDF に変換するのを Python からできないかなーと思ったのでやってみた。
cairosvg というライブラリを使うと楽のようだ。内部で cairo ライブラリを呼び出す。
cairosvg は Python 3.4 以上向けのライブラリとのことである。

インストール面倒そうだったのでとりあえずcygwinのやつで試す。なお anaconda の python でもやってみたら動いた。後述。

Cygwin

環境

準備

python3 向けの setuptools が入ってなかったので cygwin の setup.exe で次のパッケージを入れる。

  • python3-setuptools

pipをセットアップする。バージョン部分は適宜読み替える。

setuptools-3.4 pip

Cairo をインストール

Cygwin の setup.exe で

  • libcairo-devel
  • libcairo2
  • python-cairo

あたりをインストール。

CairoSVG をインストール

pip install cairosvg

Anaconda Python

WindowsPython でも Cairo のバイナリさえ適切に持ってくればいけるっぽい。

環境

Cairo のインストール

適当な GTK+ all-in-one bundle の Windows 向けをダウンロードしてきて、 .dll の入っているフォルダにパスを通す。
今回は以下のサイトから gtk3 のやつをつかってインストールした。パスも自動で設定してくれるので楽ちん。
tschoonj/GTK-for-Windows-Runtime-Environmen... - GitHub

CairoSVG をインストール

pip install cairosvg

PDF生成

import cairosvg
cairosvg.svg2pdf(url='file.svg', write_to='dest.pdf')

dpi=72 等様々なオプションも指定できるようだ。