GAミント至上主義

Web Monomaniacal Developer.

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で自分で指定するしかなさそう。