nodeを採用するプロジェクトが個人を中心に増えてきています。採用ケースが増えれば自ずと不足しているライブラリが出てきます。しかしそれもまたコミュニティベースで解決してしまうソフトウェアが作られてどんどん機能がアップしていきます。こういった成長は見ていてとても面白いですね。 今回はnodeでPDFを作成しようと思った時にどうすればいいか、その解決手段になるソフトウェアを紹介します。それがHummus PDF Writerです。C++向けライブラリも提供されていますがnode向けPDF作成ライブラリはまだ珍しいのでぜひチェックしてみてください。

使い方はシンプルで、npmでインストールできます。今回はついでにExpressもインストールしています。

$ npm install express
$ npm install hummus

インストールが終わったら例えばこんな感じでスクリプトを書きます。Expressベースで動作してPDFを生成するスクリプトです。だいたいやっていることは見れば分かるかと思います。

var express = require('express');
var app = express();
app.get('/', function(req, res){
  res.writeHead(200, {'Content-Type': 'application/pdf'});
  var hummus = require('hummus');
  var pdfWriter = hummus.createWriter(new hummus.PDFStreamForResponse(res));
  var page = pdfWriter.createPage(0,0,595,842);
  pdfWriter.startPageContentContext(page).writeText('Hello ' + (req.query.id ? req.query.id : 'World'),
    0,400,
    {
      font:pdfWriter.getFontForFile('../tests/TestMaterials/fonts/arial.ttf'),
      size:50,
      colorspace:'gray',
      color:0x00
    }
  );
  pdfWriter.writePage(page);
  pdfWriter.end();
  res.end();
});
app.listen(3000);

これを実行してWebブラウザからアクセスしてみましょう。

実行結果。idは可変です。

日本語は文字化けしますが、TrueTypeフォントさえ日本語のものを指定すれば大丈夫でしょう。

ページを作成して、その上に文字を書き込んでいくといった感じです。他にも

  • drawPath
  • drawSquare
  • drawRectangle
  • drawCircle
  • drawImage

も用意されていますので大抵のPDFは作成できるのではないでしょうか。nodeはWebアプリケーションはもちろん、コンソールベースのソフトウェアを作るのにも便利なのでコマンドラインでPDF作成するといった要件で使えるかも知れません。

Hummus PDF WriterはC++/node製、Apache License 2.0のオープンソース・ソフトウェアです。

Hummus PDF Writer galkahana/HummusJS