読者です 読者をやめる 読者になる 読者になる

ロロの空想

心に移りゆくよしなしごとを書いていくよ!

複数のsvgをまとめてpdfへ変換する - Inkscape&バッチファイル

プログラミング

Inkscapeを使ってコマンドラインでSVGから各種フォーマット(PDF、PNGなど)へ変換する-Enjoy*Studyという記事で、Inkscapeを使ってsvgファイルをpdfファイルへと変更する方法が紹介されています。ここでは、それを応用して、複数のsvgファイルをまとめてpdfに変換する方法について説明します。

・前提知識、設定

  • Inkscapeが既にインストールされている。
  • プログラミングの経験があるとわかりやすい。
  • ファイルの拡張子を表示する設定にしている。
  • コマンドラインやターミナルというものがなんなのかだいたい知っている。

とまあ、こんなもんかなと思います。画像編集ソフトの中でも、GIMPなどではなく、わざわざInkscapeというベクター画像編集ソフトをインストールした上、わざわざsvgファイルをpdfファイルへと変更しようとしている時点で、それなりにパソコンが使える人が多いと思うので、コントロールパネルとは何なのかとか、テキストエディタやメモ帳とは何なのかとかいった基本的な説明はすっ飛ばします。

・実行環境
筆者はWindows10で、ここで紹介する操作の実行を確認しています。MacとかLinuxは使ったことがないので、正直微妙に操作が変わってくるかもしれません。Windowsは、7/8/8.1/10くらいは大丈夫だと思います。XPとVistaでも実行は可能だとは思いますが、詳しいことは各自調べてみてください。以下、操作についてはWindows10での説明です。それぞれの操作内容については、

・インストールしていると便利なプログラム

個別のPDFの結合には、CubePDF Page、結合した後のPDFのの編集には、CubePDF Utilityと言った風に使い分けるのがよいと思います。どちらも無料でインストールすることができるのでインストールしておいて損はないでしょう。

svgをまとめてPDFにする大雑把な流れ
さて、ここからが本編です。

  1. Inkscape.comがコマンドラインから使えるように、PATHを通す。
  2. PDFにまとめて変換したいsvgファイルを、一つのディレクトリ内に置く。
  3. 同じディレクトリ内に、svgからpdfへと変換させるためのコードを書いたバッチファイル(拡張子.bat)を作成する。
  4. 作成したバッチファイルをダブルクリックで起動する。
  5. PDFファイルが作られる。
  6. CubePDFなどを使って、できたPDFファイルをまとめる。

PDFファイルは、ファイル名.svgをファイル名.pdfという名前で出力します。注意事項として、ダブルクリックするたびにPDFが作り直され、すでにあった同名のPDFファイルは上書きされてしまうことに留意してください。なお、svgファイルpdfに変わって消えるわけではありません。svgファイルとは別に、pdfファイルが作成されるだけです。ちなみに、生成されtpdfをまとめたいときは、ファイルエクスプローラーの検索で,「*.pdf」と打つと、PDFだけを表示してくれるので便利です。表示タプで、日付順や名前順に並び替えもできますしね。

・詳細な説明

 さて、では先程の大雑把な流れの説明をもう少し詳しく見ていきましょう。まずは、
Inkscape.comがコマンドラインから使えるように、PATHを通す。
についてPATHの通し方については、ここでは説明しません。わからなければ、バッチファイルにInkscape.comのフルパスを書き込む方法もあるのでそちらを試してもよいです。ただし、PATHを通していたほうが楽なので、PATHを通すことをおすすめします。PATHを通すときは、
(コントロールパネルのシステムとセキュリティ>システム>システムの詳細設定>環境変数
から行えます。

・PDFにまとめて変換したいsvgファイルを、一つのディレクトリ内に置く。
今回作るバッチファイルでは、「バッチファイルと同一ディレクトリ内のすべてのsvgファイルをpdfファイルへと変換する。」という操作を行うので、pdfに変換したいsvgファイルをあらかじめ同一ディレクトリ内に集めておく必要があります。

・同じディレクトリ内に、svgからpdfへと変換させるためのコードを書いたバッチファイル(拡張子.bat)を作成する。
さて、今回の操作で一番大事なところです。 ・InkscapeのPATHを通せた人
メモ帳でもなんでもいいので、以下のコードを貼り付けて、適当な名前をつけて、拡張子.batにして、変換したいsvgファイルがおいてあるディレクトリに保存してください。コードの意味は、最後に解説します。

	
dir *.svg /b > inkscape_export_pdf_list_svg.txt
for /f "tokens=1 delims=." %%a in ( inkscape_export_pdf_list_svg.txt ) do ( 
inkscape -f %%a.svg -A %%a.pdf
 )
	

InkscapeのPATHを通せなかった人
筆者は試したことはないですが、一応実行可能かとは思います。

	
dir *.svg /b > inkscape_export_pdf_list_svg.txt
for /f "tokens=1 delims=." %%a in ( inkscape_export_pdf_list_svg.txt ) do ( 
"Inkscapeのあるディレクトリへの絶対パス(インストール場所による)\inkscape.com" -f %%a.svg -A %%a.pdf
 )
	

・作成したバッチファイルをダブルクリックで起動する。
 さて、うまくバッチファイルが作れていれば、「ファイル名.bat」のアイコンが歯車が2つ噛み合ったようなものになっているはずです。これをダブルクリックすれば、コマンドプロンプトの画面が開いて順に、svgファイルのpdfファイルへの変換が始まるでしょう。このとき、inkscape_export_pdf_list_svg.txtというファイルが作られます。このファイルは、バッチファイルのたびに新規作成or上書きされるので、消しても構いません。
トラブルシューティング
・「'inkscape'は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
と表示された場合は、PATHが正しく通っていない可能性があります。確認してみてください。
・もしsvgのファイル名に「.」が拡張子以外に入っているとうまく実行できません。ファイル名に「.」は含めないようにしてください。

・PDFファイルが作られる。
 ここまでで、うまくいっていれば、PDFファイルが作られていることでしょう。あとは、CubePDFなんかを使って、まとめたり編集したりしちゃいましょう。

・バッチファイルの中身の解説
 一応解説しておきます。とはいっても、私もそんなにくわしくわかっているわけではないんですが。参考サイトとしては以下を挙げておきます。

	
dir *.svg 
	

同一ディレクトリ内から、svgファイルをすべて選択して、

	
 /b 
	

そのファイルについての詳細な情報を省いてファイル名だけを取り出して

	
 /b > inkscape_export_pdf_list_svg.txt
	

inkscape_export_pdf_list_svg.txtというファイルを新規作成or上書きしてそこに書き込む。(1行ずつ)

	
for /f "tokens=1 delims=." %%a in ( inkscape_export_pdf_list_svg.txt ) 
	

inkscape_export_pdf_list_svg.txtというファイル(さっき書き込んだファイル)から、1行ずつ読み込み、読み込んだ文字列を「.」で区切ったときにできるトークンのうち、一つ目の文字列を、%%aに代入する。

	
do ( 
inkscape -f %%a.svg -A %%a.pdf
 )
	

%%a.svgというファイルを開き、%%a.pdfへと変換する。

説明は以上です。