Я пытаюсь получить полностраничный PDF-файл, используя puppeteer
, и мой код выглядит так:
Но в результате получается несколько страниц с высотой, равной высоте страницы.
Как мне это решить? ТИА.
const puppeteer = require("puppeteer");
function sleep(ms) {
return new Promise(resolve => {
setTimeout(resolve, ms);
});
}
(async () => {
const browser = await puppeteer.launch({
headless: true
});
const page = await browser.newPage();
await page.goto("http://localhost:3000/longpage", {
waitUntil: "networkidle2"
});
let height = await page.evaluate(
() => document.documentElement.offsetHeight
);
console.info("Height", height);
await page.pdf({
path: "hni.pdf",
printBackground: true,
margin: "none",
height: height + "px"
});
await browser.close();
})();
@karthick Да, у него есть CSS как для мультимедиа, так и для печати. Я развернул веб-страницу по адресу блаженный-бункер-cf61f9.netlify.com. Не могли бы вы взглянуть?
страница, которую вы связали использует Bootstrap, в наборе которого есть следующее правило (вы можете найти его здесь):
@page{size:a3}
Это ограничит высоту страницы размером a3
.
Вы можете либо удалить правило (или вообще Bootstrap) с веб-сайта, либо добавить следующий код перед вызовом page.pdf
:
await page.addStyleTag({
content: '@page { size: auto; }',
})
Эй, Томас, это работает, он печатает все на одной странице, но печатает мобильную версию вместо @media print
. Если я использую page.emulateMedia("print");
, это все равно мобильная версия. Но это многостраничный PDF-файл с высотой печати :/
Эй, мне удалось заставить его работать, используя ваш ответ с небольшой настройкой. Вместо од auto
поставил вот так - content: @page { size:${width}px ${height}px;}
. Я получаю width
и height
, используя offsetHeight
и offsetWidth
соответственно.
@Nithin Хорошо, не стесняйтесь редактировать ответ, если хотите добавить его к ответу :)
Да, добавлю это как комментарий.
Я использую тот же код выше. Но у меня высота страницы 7500px. Содержимое за пределами 6000 пикселей не печатается в PDF. Не могли бы вы помочь с этим @Nithin и Thomas Dondorf. Заранее спасибо.
Я также задал его как отдельный вопрос, вы можете обратиться к этому stackoverflow.com/questions/63603589/… для получения более подробной информации. Может ли кто-нибудь помочь в этом.
к странице привязан какой-либо css? Используете ли вы разрывы страниц?