この記事では,pdfからsvgに複数のファイルを一括置換する方法を紹介する.
動機
draw.ioから直接svgを出力し他のグラフィックソフト等で読み込むとTEX数式がうまく読み込まれない.
一旦,pdfを介することでこれを回避することができる.
また,PowerPointがpdfに対応しておらずベクター形式で貼り付けるならsvgに変換する必要があるため,ファイル数が多いとき一括で変換できると便利である.
プログラム(Win10は不可)
コマンドラインからpdf2svgが使用できる環境を前提にする.
$ pdf2svg hoge.pdf hoge.svg
後は,pythonでこのコマンドを何度も実行すれば良い.
次のプログラムでは以下の操作を行っている.
- globを用いてpdf/内にあるpdfのファイル名を全て取得する
- pdfのパスからsvgのパスを生成する (ex. pdf/hoge.pdf⇒svg/hoge.svg)
- pythonからpdf2svgを実行する
※実行するディレクトリ直下にpdf/とsvg/を作成しておく.
import pathlib
import glob
import subprocess
for pdf in glob.glob('pdf/*.pdf'):
pdf_path = pathlib.Path(pdf)
svg_path = pathlib.Path(pdf.replace('pdf', 'svg'))
print('converting {} to {} ...'.format(pdf_path, svg_path))
subprocess.run( ["pdf2svg", pdf_path, svg_path] )
Windowsで使用したい場合
Windowsから上記で紹介したプログラムを利用したい場合はWSL(Windows Subsystem for Linux)を使用すれば良いだろう.
WSLのインストール手順
まず,管理者としてPowerShellを開き,次のコマンドを実行してWSLを有効にする.
実行終了時,再起動が必要.
$ Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
その後,MicroSoft Store で「WSL」と検索し,使用したいLinuxディストリビューションをインストールする.
特にこだわりがなければUbuntuの最新LTSが良いだろう(LTSはLong Term Supportの略).
WSLインストール後
WSLを起動するとWSLにおけるホームディレクトリから始まる.
デフォルトの状態でpython3が使用できるので,上記のプログラムはインストール後すぐに実行できる.
普段Windowsで作業しているディレクトリに行きたいときは,Cドライブの場合,
$ cd /mnt/c
でできる.
良く行き来するディレクトリは,次のようにWSLのホームにシンボリックリンクでショートカットを用意しておくと便利.
$ cd ~
$ ln -s /mnt/d/Users/UserName/Documents
まとめ
svg2pdfとpythonを組み合わせてsvg⇒pdfの変換を手っ取り早くできるようになった.
svg2pdfを実行できれば良いだけなので,ShellScriptで組んでも良い.
参考
- WSL
https://docs.microsoft.com/ja-jp/windows/wsl/install-win10
- WSLの作業ディレクトリ