如何使用puppeteer和Node js为pdf页面生成屏幕截图

时间:2019-05-13 11:40:28

标签: node.js puppeteer

我正在使用puppeteer和node js创建一个屏幕截图生成器。它适用于普通网页,但对于pdf页面,每次运行时总是会出现相同的错误

这是代码(https://github.com/GoogleChrome/puppeteer的第一个示例)

FILTER p.vertices[1].property == 'P6'

我得到的错误

const puppeteer = require('puppeteer');

(async () => {
    try {
        const browser = await puppeteer.launch();
        const page = await browser.newPage();
        await page.goto('https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf');
        await page.screenshot({ path: 'example.png' });
        await browser.close();
    } catch (err) {
        console.log(err);
    }
})();

感谢您的帮助。我也欢迎其他任何可能的解决方案。

2 个答案:

答案 0 :(得分:0)

无头Chrome为not able to visit PDF pages,在您遇到问题时将抛出错误@objc func managedObjectContextWillSave(notification: NSNotification) { for object in (notification.object as! NSManagedObjectContext).updatedObjects { if let note = object as? Note { //Do Something like loading table cell again } } } 。尽管您可以使用Error: net::ERR_ABORTED访问PDF文档,但是截屏也会失败,因为PDF不是真正的网站,实际上是在单独的视图中呈现的。

替代方法

您可以做的是下载页面并使用PDF.js创建页面图像。您可能想查看有关“ pdf到图像”或“ pdf预览”主题的其他信息。关于该主题以及1本身,有很多关于stackoverflow(2examples on the PDF.js page,..)的问题。

答案 1 :(得分:0)

Chromium不允许以headless true模式打开pdf文件,请改用headless false模式。 等待puppeteer.launch({args:['--no-sandbox'],headless:false})