入力フォームのような体裁のPDFってありますよね。
例えば、こんなのです。
出典:医療費控除の明細書など -- 国税庁ホームページ-明細書・計算明細書等
直接このフォームに文字列を追記できたらペンを持たなくて済むので便利ですね!
そこで利用するのがHummusJSです!
動作環境
node: v14.17.4
npm: v6.14.14
nodeやnpmの環境がない場合はインストールしてください。
HummusJSはv1.0.110
を利用しました。
試してみよう
プロジェクト作成
> npm init
表示される内容がよくわからなければ、全てエンターキーで飛ばして頂いて構いません。
npmでHummusJS
をインストール
> npm install hummus
同ディレクトリに以下ファイルを作成
overwrite.js
const hummus = require("hummus");
const pdfWriter = hummus.createWriterToModify(
"original.pdf", // 編集元PDFのパス
{ modifiedFilePath: "output.pdf" } // 保存先パス
);
// フォントファイルをインポート
const font = pdfWriter.getFontForFile("font.ttf");
// 編集するページを取得(1ページ目を編集するため、2つ目の引数を0とする)
const pageModifier = new hummus.PDFPageModifier(pdfWriter,0);
pageModifier.startContext().getContext().writeText(
"野比のび太", // 入力文字列
59,572, // 座標を入力 ページの左下端が(0,0)
{
font: font, // フォントの指定
size: 12, // 文字サイズの指定
colorspace: "gray", // 色空間を"gray", "cmyk", "rgb"から選択
color: 0x00 // カラーコード
}
);
pageModifier.startContext().getContext().writeText(
"ドラえもん",
59,552,
{
font: font,
size: 12,
colorspace: "rgb",
color: 0x153ed3 // 青色
}
);
pageModifier.endContext().writePage();
pdfWriter.end();
同ディレクトリにinput.pdf
とfont.ttf
を配置
今回、input.pdf
として前述のPDF、font.ttf
として源真ゴシックをお借りしました。
実行
> node overwrite.js
正常動作した場合、何も表示されません。output.pdf
が出力されます。
output.pdf
の内容確認
二人の名前を氏名欄に書き込むことができました!
まとめ
座標を指定しなければならないのは面倒ですが、特に難しいこともなくPDFへの書き込みをできるHummusJSを是非活用してみてください!
今回利用したコードはこちらにもあります。