@alexmixaylov

Как сохранить при помощи puppeteer пдф страничку после редиректа?

Приветсвую уважаемое сообщество.
Это мой первый опыт с puppeteer и подобным ПО, так что не судите строго
Пытаюсь скачать ПДФ и чего то недопонимаю как его до конца доделать
У меня есть ссылка, переход по которой вызывает редирект на сервис генерации ПДФ
В браузере отслеживаю успешгый редирект, появляется страничка с готовым ПДФ но дальше браузер останавливается и все - сохранения не происходит и браузер не закрывается browser.close(); не срабатывает
В чем прикол может быть? Я пытался page.waitForNavigation(), тоже до лампочки

(async () => {
    const cookiesString = await fs.readFile(path.join(__dirname, '/../tmp/cookies.json'));
    const cookies = JSON.parse(cookiesString);

    const browser = await puppeteer.launch({
        headless: false,
    });
    const page = await browser.newPage();
    await page.setCookie(...cookies);

    await page.goto(url);
    console.log(page.url())
    // url = https://www.copart.com/invoice/pdf?invoiceNumber=*******&paymentType=U&currencyCode=USD....'

    // происходит редирект на сторонний сервис который генерит ПДФ, 
    // например как ссылка в комменте ниже, по ней отдается уже готовый ПДФ
    // https://services.copart.com/pdf-ws/pdf/********?st=JKQXU5UXNvf-MrzVKANNvg&e=15997

    // теперь я пытаюсь сохранить полученый результат в файл
    const file = await page.pdf({
        path: path.join(__dirname, '/../invoices'),
        format: 'A4'
    });

    await browser.close();
})();


Я посмотрел заголовки
const response = await page.goto(url);
    console.log(response.headers())

возвращается 'content-type': 'application/pdf'

page.pdf().catch(e=>console.log(e)); возвращает ошибку
Error: Protocol error (Page.printToPDF): PrintToPDF is not implemented at Promise (/home/alex/www/driver/node_modules/puppeteer/lib/cjs/puppeteer/common/Connection.js:208:63) at new Promise () at CDPSession.send (/home/alex/www/driver/node_modules/puppeteer/lib/cjs/puppeteer/common/Connection.js:207:16) at Page.pdf (/home/alex/www/driver/node_modules/puppeteer/lib/cjs/puppeteer/common/Page.js:1152:43) at /home/alex/www/driver/bin/downloadInvoice.js:25:29 at process._tickCallback (internal/process/next_tick.js:68:7) message: 'Protocol error (Page.printToPDF): PrintToPDF is not implemented'
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы