ヘッドレスchrome puppeteerを使用して(Webサーバーなしで)ローカルhtmlファイルを開くことはできますか?ローカルサーバーに対してのみ動作するようにゲートできました。
SetContent()apiおよびgoto() api と
ローカルでテストを行い(Windowsでこれを確認できます)、puppeteerはpage.gotoと完全なファイルURLを使用してローカルのhtmlファイルを喜んで開き、pdfとして保存しました。
'use strict';
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('file://C:/Users/compoundeye/test.html');
await page.pdf({
path: 'test.pdf',
format: 'A4',
margin: {
top: "20px",
left: "20px",
right: "20px",
bottom: "20px"
}
});
await browser.close();
})();
相対パスを使用する必要がある場合は、相対ファイルパスの使用に関する次の質問を参照してください。 File Uri Scheme and Relative Files
ファイルがローカルにある場合、setContentの使用はgotoよりも優れています。
var contentHtml = fs.readFileSync('file://C:/Users/compoundeye/test.html', 'utf8');
await page. setContent(contentHtml);
setContentとgotoの間のパフォーマンスを ここで確認できます
なぜHTMLファイルを開いてコンテンツを読み取ってから「setContent」
ブラウザにロードしたいファイルを開き、URLをコピーして、すべての\が正しいことを確認します。
await page.goto(`file:///C:/pup_scrapper/testpage/TM.html`);