【发布时间】:2020-12-20 21:53:32
【问题描述】:
我是 Puppeteer 的新手。成功地将整个网站转换为 pdf,但是,理想情况下,我需要将 div 中的 MathJax 方程转换为 pdf。到目前为止,我正在使用以下代码:
// Require puppeteer
const puppeteer = require('puppeteer');
(async () => {
// Create an instance of the chrome browser
// But disable headless mode !
const browser = await puppeteer.launch()
// Create a new page
const page = await browser.newPage()
// Configure the navigation timeout
await page.goto('https://9217531f4f48.ngrok.io/chapter-14/weblesson.php', {
waitUntil: 'load',
// Remove the timeout
timeout: 30000
});
// Navigate to a particular div on the website
const dom = await page.$eval('#doto', (el) => {
return el.innerHTML
}) // Get DOM HTML
await page.evaluate(async () => {
const script = document.createElement('script');
script.src ='https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js" id="MathJax-script';
const promise = new Promise((resolve, reject) => {
script.onload = resolve;
script.onerror = reject;
});
document.head.appendChild(script);
await promise;
});
await page.setContent(dom)
await page.pdf({path: 'pdf/pairt.pdf',
format: 'A4',
printBackground: true,
displayHeaderFooter: true,
headerTemplate: '<div id="header-template" style="font-size:10px !important; color:#808080; padding-left:10px"><span class="date"></span><span class="title"></span><span class="pageNumber"></span><span class="totalPages"></span></div>',
footerTemplate: '<div id="footer-template" style="font-size:10px !important; color:#808080; padding-left:10px"><span class="date"></span><span class="title"></span><span class="url"></span><span class="pageNumber"></span><span class="totalPages"></span></div>',
margin: {
top: '100px',
bottom: '200px',
right: '30px',
left: '30px',
},
});
await page.close();
await browser.close()
})()
我得到以下内容
Puppeteer 不允许 MathJax 脚本在 page.$eval 上正确转换数学表达式。
预期输出;
我需要有关如何将 MathJax 方程呈现为 pdf 的帮助,如预期输出中所示
【问题讨论】:
-
您查看过MathJax node demos 存储库中的Puppeteer example 吗?
-
@DavideCervone,好指针。查看这些文件,完成后会再次回复您。谢谢。
标签: javascript html node.js puppeteer mathjax