ひとこと

― 今日のひとこと ―
気付けば前回更新してから2年以上経ってた
(2023.10.25)

2019年3月3日日曜日

C# Windowsプログラミングおぼえがき No.3 - 画像をまとめてPDF化 -

元同僚から以前もらっていた文書資料がなぜかPNGファイル。しかも数百個。
通勤中にスマホで読みたいがこのままだと不便なので、PDF化することに。

すぐに使えるWebサービスを探してみたけど、ファイル数の上限が20個までだとか、そもそも一時的にとはいえ第三者に私的なファイルを渡したくないとか、そういう理由でどれも使わず。

なので自分でそういうプログラムを作った。自宅のPCがWindowsなので楽にC#で。
(Githubで公開)

特定のディレクトリに存在する画像ファイルをすべて読み取ってひとつのPDFに入れ込む。
> Img2Pdf.exe "C:\img"
とか
> Img2Pdf.exe "C:\img" jpg
というように実行するだけ。

第1引数に対象ディレクトリパスを、
第2引数に対象にしたい拡張子(png or jpg)を指定する。
第2引数を指定しなければ.pngと.jpgと.bmpが対象になる。
実行すると、実行ファイルと同じパスにPDFというディレクトリが生成され、その直下にPDFが生成される。
PDFのファイル名は第1引数で指定したディレクトリの名称になる。上記の例だとimg.pdf。

PDFのページ順はファイル名の自然順になり、
PDFのページサイズは最初のページに依存する(この辺りはあまり作り込んでない)。

作っていて引っかかったのが以下の2点。
1.ページサイズを指定せず処理した場合、解像度の高い画像を処理するとページが見切れてしまう。
2.拡張子を一切制限せず処理した場合、Thumb.dbなどの画像ではないファイルを処理した際に例外が発生する。

ここ1年ほどプログラミングの機会がほとんどなくなっていたので、短時間とはいえやっていて楽しかった。