スポンサーリンク

pdfからsvgに一括で変換する

この記事では,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
WSL のインストール
コマンド wsl --install を使用して Linux 用 Windows サブシステムをインストールします。 Windows コンピューター上で、好みの Linux ディストリビューションによって実行される Bash ターミナルを使用します。Ubuntu、Debian、SUSE、Kali、Fedora、Peng...
  • WSLの作業ディレクトリ
WSLとwindows間のファイル連携 - Qiita
tl;dr WSL(Windows Subsystem for Linux)からWindowsファイルシステム(要はCドライブ等)へのアクセス、またはその逆でWindows側からWSLのファイルシステムへのアクセス方法です。 ※...

コメント

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