いまいち名前が気に入っていないHeadlessChrome、Express、Puppeteerを使ったPDF変換サーバーのhcep-pdf-server
github.com
今まではA4余白なしのみで、CSSなんとかすればいいと思ってたけど、中身が長くなり改ページされるとそのページの間が余白なしになってしまい、印刷の時に問題があるのでデフォルトは余白ありにした。
const pdfOptions = { 'A3': new PdfOption({ 'format': 'A3' }), 'A3Full': new PdfOption({ 'format': 'A3', margin: '0mm' }), 'A3Landscape': new PdfOption({ 'format': 'A3', landscape: true, margin: '0mm' }), 'A3LandscapeFull': new PdfOption({ 'format': 'A3', landscape: true }), 'A4': new PdfOption({ 'format': 'A4' }), 'A4Full': new PdfOption({ 'format': 'A4', margin: '0mm' }), 'A4Landscape': new PdfOption({ 'format': 'A4', landscape: true }), 'A4LandscapeFull': new PdfOption({ 'format': 'A4', landscape: true, margin: '0mm' }) }
とりあえずA4,A3の余白ありなし、縦横だけ用意して、リクエスト時にpdf_optionパラメータでkeyを渡せば変更できるようになった。
今回はじめてClassとconstructorを使ってみた。
そのほかのオプションは公式参照
puppeteer/api.md at master · GoogleChrome/puppeteer · GitHub
A0~A6まではデフォルトでformatで用意されているけど、薄い本を中心に日本でまだ出番がありそうなBはないので、width、heightで自分で指定するしかなさそう。