Puppeteer:无法使用本地存储的图像呈现 pdf
Puppeteer: cannot render pdf with images stored locally
我无法获取本地存储的图像以使用 Puppeteer 在生成的 pdf 中呈现,但我指定 url 工作的外部图像。
特别是,在下面的示例代码中,呈现 test_html1 中的页面有效,同时呈现 test_html2 不起作用。
(async () => {
const browser = await puppeteer.launch({ args: ['--no-sandbox'] });
const page = await browser.newPage();
const test_html1 = `<html><h3>Hello world!</h3><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Google_2015_logo.svg/1024px-Google_2015_logo.svg.png"></html>`;
// const test_html2 = `<html><h3>Hello world!</h3><img src="file:///home/cristina/Documents/logo.jpg"></html>`;
await page.goto(`data:text/html,${test_html}`, { waitUntil: 'networkidle0' });
await page.pdf({ path: `${this.outputPath}/test-puppeteer.pdf`,
format: 'A4', landscape: !data.isPortrait,
margin: { top: '0.5cm', right: '1cm', bottom: '0.8cm', left: '1cm' }, printBackground: true });
await browser.close();
})();
结果 test_html1:
结果 test_html2:
我的问题:
- Puppeteer 是否使用绝对 img 路径?
- 如果是,我指定的路径是否正确?还是我做错了什么?
已在 Puppeteer 上解决 GitHub:https://github.com/GoogleChrome/puppeteer/issues/1643
基本上,它不起作用,因为作为针对恶意网站的安全措施,对本地图像的访问被阻止。
我无法获取本地存储的图像以使用 Puppeteer 在生成的 pdf 中呈现,但我指定 url 工作的外部图像。
特别是,在下面的示例代码中,呈现 test_html1 中的页面有效,同时呈现 test_html2 不起作用。
(async () => {
const browser = await puppeteer.launch({ args: ['--no-sandbox'] });
const page = await browser.newPage();
const test_html1 = `<html><h3>Hello world!</h3><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Google_2015_logo.svg/1024px-Google_2015_logo.svg.png"></html>`;
// const test_html2 = `<html><h3>Hello world!</h3><img src="file:///home/cristina/Documents/logo.jpg"></html>`;
await page.goto(`data:text/html,${test_html}`, { waitUntil: 'networkidle0' });
await page.pdf({ path: `${this.outputPath}/test-puppeteer.pdf`,
format: 'A4', landscape: !data.isPortrait,
margin: { top: '0.5cm', right: '1cm', bottom: '0.8cm', left: '1cm' }, printBackground: true });
await browser.close();
})();
结果 test_html1:
结果 test_html2:
我的问题:
- Puppeteer 是否使用绝对 img 路径?
- 如果是,我指定的路径是否正确?还是我做错了什么?
已在 Puppeteer 上解决 GitHub:https://github.com/GoogleChrome/puppeteer/issues/1643
基本上,它不起作用,因为作为针对恶意网站的安全措施,对本地图像的访问被阻止。