PowerShell で iTextSharp を使って PDF にテキストを追加する
番号管理している土地の図面に所有者の名前入れて名前でフォルダ分けしやがれという無茶振りを受け、PDF 化済の図面に所有者名を入れることになったので書いたスクリプトです。
名前でフォルダ分けするのは何回か PowerShell で行ったことはありますが、PDF に文字列を追加するのは初めてでした。
今回は PowerShell を使って iText で配布されている iTextSharp を読み込んで文字列を追加させています。
各種ファイルパスが B ドライブにあるのはただの RAM DISK なので気にしないでください。ついでに用紙サイズが B4 なのですが、伝統なので気にしたら負けです。
引っかかったところ
まず用紙サイズ。
iTextSharp.text.Rectangle
で作っている用紙サイズの数値はミリメートルではなく 28.35 px/cm を基準として必要な数字が取り出せました。PDF を Tiff で保存するときの一番低い解像度と同じ単位ですね。
最初はミリメートルを指定してエラい小さい図面になってしまいました。
次いで用紙の向き。
元の PDF は B4 横の図面なのですが、iTextSharp.text.pdf.PdfReader
で読み込むと B4 縦で配置されてしまいました。
そこで AddTemplate
を使って回転させたのですが、こいつの指定にも難儀しました。
回転行列と dx, dy っぽい値を入れたら回転してくれました。合ってるのかなこれ…。
$$ \begin{bmatrix} Cos \theta & - Sin \theta \\ Sin \theta & Cos \theta \end{bmatrix} $$
オレ達の戦いはこれからだ
これで1枚分は名前を入れられるので、番号と名前のデータベースを PowerShell で読み込んで振り分けるスクリプトを書かないとですね。
何枚もやって変な風に出てきたら泣くしかない。