Я попытался воспроизвести вашу проблему:
Я использовал другой URL-адрес фонового изображения (онлайн) с вашей HTML страницей, см. тест. html gist.
По-видимому, по умолчанию установлен ряд параметров. См. page.pdf()
.
Также добавлены browser.newContext()
и browser.close()
.
Вот минимальный рабочий NodeJS код:
generate-pdf. js
const { chromium } = require("playwright");
(async () => {
const htmlFilename = "file:///<file-path>/test.html";
console.log("[webpage]", htmlFilename);
const browser = await chromium.launch();
const context = await browser.newContext();
const page = await context.newPage();
await page.goto(htmlFilename);
const pdfFilename = "./test.pdf";
console.log("[pdf file]", pdfFilename);
const options = {
path: pdfFilename,
pageRanges: "1",
preferCSSPageSize: true
};
console.log(
`\n\nAbout to print:\n ${pdfFilename}\n`,
`with:\n${JSON.stringify(options, null, 2)}`
);
await page.pdf(options);
await browser.close();
console.log("done");
})();
Вывод в консоль:
$ node generate-pdf.js
[webpage] file:///<file-path>/test.html
[pdf file] ./test.pdf
About to print:
./test.pdf
with:
{
"path": "./test.pdf",
"pageRanges": "1",
"preferCSSPageSize": true
}
done
Снимок PDF ( test.pdf ):
test.pdf
Возможно, вы захотите протестировать это отдельно и посмотреть, работает ли он для вашего варианта использования.