序
既存のPDFにテキストを追加したい・・と思ったことありませんか?
今の時期なら国税庁が配布している確定申告書等のPDFに印字したい、とかでしょうか。
確定申告書等の様式・手引き等(令和5年分の所得税及び復興特別所得税の確定申告分)|国税庁
※なお、私はe-Taxで済ませたので実際のところは確定申告書を印刷したいわけではありません
画像として編集
PDFをjpgなりpngなりのラスター画像にして編集する方法。
画像にしてしまえばいくらでも文字を載せたりすることはできます。
が、欠点としては以下の点が挙げられます
- 出力時の解像度が低いと印刷時に汚くなる
- 出力時の解像度が高いとファイルサイズが大きくなる
- テキストとしての情報が失われて画像になってしまうので再度の編集が難しくなる
ライブラリ
pdf.js
GitHub - mozilla/pdf.js: PDF Reader in JavaScript
pdf.jsはJavaScriptでHTML5のcanvasにPDFを描画するためのライブラリ。
描画してからcanvasのtoDataURLを使うとPNGを出力できるが、当然テキストの情報は失われます。
無理やりpdf.jsが内部で持っているoperationのdataをいじれば内容は編集できるが、素のPDFの情報に近く、編集するのはかなり大変。
pdf-lib
https://github.com/Hopding/pdf-lib
jsのコードからテキストを追加できます。
ただしGUIはなく、位置を指定する必要がある(単位はポイント=1/72インチ?)。また文字ごとの間隔を調整したい場合は1文字ずつ印字、になりそう。
既存テキストの編集はできません(対応したいと言っているが3年位開発止まってる)。
HummusJS/MuhammaraJS
https://github.com/julianhille/MuhammaraJS
HummusJSが開発終了してMuhammaraJSに引き継がれた。
C++製ライブラリとそのjsラッパーなのでブラウザでは動作しない(だれかWebAssembly化して・・)
PDFBox
Java製ライブラリ。
テキストの追加は出来る。
まとめ
コードからPDFにテキスト追加できるライブラリはいくつかありましたが、既存テキストの編集は見つけられませんでした。