Как прочитать файл PDF с помощью puppeteer.js и отображать в html?

#node.js #web-scraping #puppeteer

#node.js #очистка веб-страниц #кукловод

Вопрос:

Надеюсь, вы в безопасности.

Я создаю один скрипт, который выполняет некоторую очистку сайта. Теперь проблема в том, что у меня есть один сайт, на котором есть pdf. Итак, я не могу прочитать этот PDF-файл, используя puppeteer и Node.js .

Я могу читать другой текст из других ссылок.

Что я пробовал

 const puppeteer = require('puppeteer')

async function printPDF() {
   const browser = await puppeteer.launch({ headless: true });
   const page = await browser.newPage();
   await page.goto('https://blog.risingstack.com', {waitUntil: 'networkidle0'});
   const pdf = await page.pdf({ format: 'A4' });

   await browser.close();
   return pdf
})
 

Это будет работать для добавления текста в pdf, но мне нужен pdf для текста.

Может кто-нибудь помочь мне с этим?

Ответ №1:

Существует модуль npm с именем «pdfreader». Вы можете это проверить.

Комментарии:

1. Спасибо за ваш ответ. Вы уверены, что этот npm сможет прочитать pdf из Live link? Ссылка может быть любой. Поскольку я проверил этот npm, это будет использоваться для чтения pdf из локального пути. В моем случае: URL-адрес может быть таким: htttps://anyhost.com/any/path/of/pdf/sample.pdf

2. О, теперь я понял, с какой проблемой вы столкнулись. Согласно моим исследованиям, безголовый режим puppeteer пока не поддерживает чтение PDF-файлов онлайн. Но должен быть способ развернуться. Я нашел эти 2 статьи, которые могут вам помочь. 1-) github.com/puppeteer/puppeteer/issues /… 2-) github.com/puppeteer/puppeteer/issues /… Первый из них предназначен для просмотра на Google Диске, чтобы иметь возможность читать PDF-файлы. Второй — сначала загрузить файл PDF, а затем делать то, что вы хотите. Вы также можете использовать модуль ‘pdfreader’ для 2. alternatife.

Ответ №2:

К вашему сведению, это было возможно в Playwright с помощью Firefox и перехода к файлу PDF, который будет открыт с помощью PDF.js . Однако последние версии Playwright нарушили эту функциональность:

https://github.com/microsoft/playwright/issues/13157