HeadlessChromeを使ったPDF変換サーバーにサイズ変更オプションを追加した
いまいち名前が気に入っていない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で自分で指定するしかなさそう。