ゆるふわ技術日誌

エンジニア見習いの悪戦苦闘日記

PuppeteerのちょっとしたTipsいろいろ

ちょっと用事があってPuppeteerを初めて触ってみました。

以前、バイトをしていた時にSeleniumを触っていたことがありましたが、そちらと比べると、サクッとインストールできるし(npmだけで入る)、async/awaitで現代的だし、素晴らしいです。


Puppeteer触ってて調べたことをメモしておく。ちなみにv1.12.1。

PDFにマージンを設定する

const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.pdf({
  path: savePath,
  format: 'A4',
  margin: {
    top: 30,
    left: 30,
    right: 30,
    bottom: 30
  }
});
await browser.close()

こんな感じ。

ブラウザを表示する(非ヘッドレスにする)

launch()を呼ぶ時に、

await puppeteer.launch({headless: false});

としてあげる。

ちなみに、要注意な点として、非ヘッドレス状態では、PDF出力は利用できずエラーになります。

(Error: Protocol error (Page.printToPDF): PrintToPDF is not implementedとなる)

直接HTMLをブラウザに流し込む

Webサイトを開くのではなく、直接HTMLの文字列を流し込みたい時。

await page.setContent('<h1>Hello Puppeteer!!</h1>');

こんな感じ。

これと、ejsを組み合わせてちょっと企んでますが、その話はまた今度。