この記事では,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://learn.microsoft.com/en-us/media/open-graph-image.png)
- WSLの作業ディレクトリ
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9V1NMJUUzJTgxJUE4d2luZG93cyVFOSU5NiU5MyVFMyU4MSVBRSVFMyU4MyU5NSVFMyU4MiVBMSVFMyU4MiVBNCVFMyU4MyVBQiVFOSU4MCVBMyVFNiU5MCVCQSZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9ZWQzNWY4ZTdhNDU5ZWU1YWIyYjgxMDYwMjE2ZDY4ZGI&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBxdXpxJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz04MTQ5YWIyMWNkZDJjMDIxZDUwNmNiOGJjNmIwZWIzNg&blend-x=142&blend-y=486&blend-mode=normal&s=3a47053c378e42b2ad6b5e888d7752b0)
コメント