Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

PhantomJsで画像やらPDFやらがレンダリングされる場合

PhantomJsにて、バックヤードが自動生成でバイナリファイルを吐く場合
……たとえば画像やPDFを吐く場合は、標準出力に書き出すという技があるようです。
ダウンロードせんともエエのですね……。

実際のところ

アウトプットされた結果は
ハッシュ値比較や特徴点抽出なんかで比べてやれば良いでしょう。
流石に目視比較は不毛にも程がありますからね……。

画像

var webPage = require('webpage');
var page = webPage.create();
var fs = require("fs");

page.viewportSize = {
	width: 1920,
	height: 1080
};

page.open('http://phantomjs.org', function (status) {
  var base64data = page.renderBase64('PNG');
  var fs = require("fs");
  fs.write("/dev/stdout", base64data, "w");
  phantom.exit();
});

デコードするときにはbase64コマンドをつかうといいかと。

$ phantomjs phantomtest.js | base64 -D > i.png

pdf

page.render(output);
var fs = require("fs");
var pdf = fs.read(output);
fs.write("/dev/stdout", pdf, "w");
fs.remove(output);