Пользовательский колонтитул Puppeteer для рендера PDF - PullRequest
0 голосов
/ 19 сентября 2018

Я работаю над рендерингом PDF сайта.Мне нужны разные колонтитулы для первой страницы и разные для остальных страниц.Есть ли способ сделать это?

const puppeteer = require('puppeteer');

(async() => {
 var t = Date.now();
 console.log('Current time ' + t + ' msec'); 

 const browser = await puppeteer.launch({executablePath: 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe', ignoreHTTPSErrors:true, headless:true, devtools:false});
const page = await browser.newPage();
await page.setViewport({width: 1920, height: 1080});

await page.setExtraHTTPHeaders({'Report-Print-Preview-Mode':'true'});
await page.goto('https://localhost', {waitUntil: 'networkidle2'});
await page.type('#username', 'scott');
await page.type('#password', 'tiger');  
await page.click('[id="login_button"]');

await page.waitForSelector('[id="new_page_table_id"]');
await page.on('console', msg => console.log('PAGE LOG:', msg.text()));

// page.pdf() is currently supported only in headless mode.
// @see https://bugs.chromium.org/p/chromium/issues/detail?id=753118

await page.pdf({
path: 'report.pdf',
displayHeaderFooter: true,
headerTemplate: '<span style="font-size: 30px; width: 50px; height: 50px; background-color: black; color:black; margin: 20px;">Header</span>', 
footerTemplate: '<span style="font-size: 30px; width: 50px; height: 50px; background-color: black; color:black; margin: 20px;">Footer</span>',
printBackground: true,
format: 'A4',
margin:{top:'2cm',right:'2cm',bottom:'2cm',left:'2cm'}
});

await browser.close();

t = Date.now() - t;
console.log('Execution time ' + t + ' msec');
})();

Как мне этого добиться?Пожалуйста, помогите.

1 Ответ

0 голосов
/ 24 сентября 2018

Не существует готовой реализации кукловода функции, которую вы запрашиваете.

В то же время существует пара способов, описанных в разделе " Возможность запрета верхнего / нижнего колонтитула на некоторых страницах ".Первое предложение состоит в том, чтобы конвертировать несколько раз с различным диапазоном и использовать разные комбинации заголовка / нижнего колонтитула;после слияния получающиеся буферы с чем-то вроде https://github.com/astefanutti/decktape. и другим, хакерским решением с использованием @page:first стиля CSS.

...