NodeJs - Puppeteer: почему установка размера страницы ниже неэффективна? - PullRequest
0 голосов
/ 18 октября 2019

Я попытался установить размер страницы PDF и сделать его альбомным, но не получилось. Что я должен изменить, чтобы сделать его эффективным?

Я пытался добавить page.setViewport & isLandscape много раз, но все еще не делал его эффективным.

browser = await puppeteer.launch({
    executablePath: '/usr/bin/chromium-browser',
    args: ['--no-sandbox', '--enable-font-antialiasing', '--font-render-hinting=medium'], //, '--window-size=1070x1514', '--disable-dev-shm-usage', '--disable-gpu', '--disable-software-rasterizer'
    timeout: LOAD_TIMEOUT,
    headless: true
    ,isLandscape: true
});

page = await browser.newPage();

await page.setViewport({
    width: 1080,
    height: 1600,
    deviceScaleFactor: 1,
    isLandscape: true
});

// local file
await page.goto(`file:///${ __dirname}/www/index.html`, {
    waitUntil: 'domcontentloaded',
    timeout: LOAD_TIMEOUT
});

await page.waitForFunction(() => !!(window.Ext && Ext.isReady && window.App && App.app), {
    polling: LOAD_POLLING,
    timeout: LOAD_TIMEOUT
});
await page.setViewport({
    width: 1080,
    height: 1600,
    deviceScaleFactor: 1,
    isLandscape: true
});

await page.evaluate(
    App.pdf.Builder.create({
        ...
    });
);
await page.waitForFunction(() => App.pdf.Builder.ready || App.pdf.Builder.error, {
    polling: LOAD_POLLING,
    timeout: PAGEBUILD_TIMEOUT
});

await page.pdf({
    path: filePath,
    format: 'A4',
    margin: {
        top: '0px',
        right: '0px',
        bottom: '0px',
        left: '0px'
    },
    printBackground: true // required for photos otherwise blank
    ,scale: 0.5
});

Я пытался добавить width: '1920px', height: '1080px' в page.pdf(), но тоже не удалось. (только может сделать это в альбомной ориентации, если установлено в page.pdf())

1 Ответ

1 голос
/ 18 октября 2019

В соответствии с документами вам также нужно указать page.pdf метод, что вам нужен пейзаж PDF:

await page.pdf({
    landscape: true, // <-- must be set to true to get a landscape PDF
    path: filePath,
    format: 'A4',
    margin: {
        top: '0px',
        right: '0px',
        bottom: '0px',
        left: '0px'
    },
    printBackground: true // required for photos otherwise blank
    ,scale: 0.5
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...