4
1

More than 3 years have passed since last update.

【Node.js】HummusJSで既存のPDFへ簡単書き込み

Last updated at Posted at 2021-08-27

入力フォームのような体裁のPDFってありますよね。
例えば、こんなのです。
form1.PNG
出典:医療費控除の明細書など -- 国税庁ホームページ-明細書・計算明細書等

直接このフォームに文字列を追記できたらペンを持たなくて済むので便利ですね!
そこで利用するのが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.pdffont.ttfを配置

今回、input.pdfとして前述のPDFfont.ttfとして源真ゴシックをお借りしました。

実行

> node overwrite.js

正常動作した場合、何も表示されません。output.pdfが出力されます。

output.pdfの内容確認

二人の名前を氏名欄に書き込むことができました!

form2.PNG

まとめ

座標を指定しなければならないのは面倒ですが、特に難しいこともなくPDFへの書き込みをできるHummusJSを是非活用してみてください!
今回利用したコードはこちらにもあります。

参考URL

HummusJS - wiki

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1