如何使用 Node JS / Webdriver.io / Chimp 打印成 PDF?
How to print to PDF using Node JS / Webdriver.io / Chimp?
我正在尝试在 Node JS 中使用 Chimp / Webdriver.io / Selenium 来测试我的 @media print
CSS 以确保当人们从我的打印时一切都正确显示网站。
如何以编程方式让 Chrome/Firefox 打印成 PDF?我不想将屏幕截图转换为 PDF。我希望 PDF 看起来像打印时的样子。
那么,如何扫描 PDF 以确保结果正确?
成功!我必须 install/use 以下工具:
npm install html-pdf-chrome --save-dev
npm install pdfreader --save-dev
html-pdf-chrome is used to magically call Chrome to convert some given HTML to a PDF in the manner that Chrome would normally use to print. pdfreader 是一个读取所述 PDF 然后提供其中文本的包。
浏览到我要使用webdriver打印的页面后,我可以调用:
this.When(/^I print the page to a PDF named "([^"]*)"$/,
async function(outputFilename) {
console.log("Getting the html...");
let sourceHTML = await browser.getSource();
console.log("Printing the html using Chrome...");
let pdf = await HtmlPdf.create(sourceHTML);
console.log("Saving the PDF to " + outputFilename + "...");
await pdf.toFile(path.join(DEFAULT_PRINT_PATH, outputFilename));
});
然后,为了获取 PDF 中的文本,我调用了这个函数:
function readPdfText(filename) {
return new Promise((resolve, reject) => {
let pdfText = "";
new pdfReader.PdfReader().parseFileItems(path.join(DEFAULT_PRINT_PATH, filename), function(err, item){
if (err){
console.log("Error received on parsing PDF: " + err, err.stack);
reject(err);
}
else if (!item) {
resolve(pdfText);
}
else if (item.text) {
if(item.text.trim() === ":") {
pdfText += item.text;
} else {
pdfText += "\n" + item.text;
}
}
});
});
}
我正在尝试在 Node JS 中使用 Chimp / Webdriver.io / Selenium 来测试我的 @media print
CSS 以确保当人们从我的打印时一切都正确显示网站。
如何以编程方式让 Chrome/Firefox 打印成 PDF?我不想将屏幕截图转换为 PDF。我希望 PDF 看起来像打印时的样子。
那么,如何扫描 PDF 以确保结果正确?
成功!我必须 install/use 以下工具:
npm install html-pdf-chrome --save-dev
npm install pdfreader --save-dev
html-pdf-chrome is used to magically call Chrome to convert some given HTML to a PDF in the manner that Chrome would normally use to print. pdfreader 是一个读取所述 PDF 然后提供其中文本的包。
浏览到我要使用webdriver打印的页面后,我可以调用:
this.When(/^I print the page to a PDF named "([^"]*)"$/,
async function(outputFilename) {
console.log("Getting the html...");
let sourceHTML = await browser.getSource();
console.log("Printing the html using Chrome...");
let pdf = await HtmlPdf.create(sourceHTML);
console.log("Saving the PDF to " + outputFilename + "...");
await pdf.toFile(path.join(DEFAULT_PRINT_PATH, outputFilename));
});
然后,为了获取 PDF 中的文本,我调用了这个函数:
function readPdfText(filename) {
return new Promise((resolve, reject) => {
let pdfText = "";
new pdfReader.PdfReader().parseFileItems(path.join(DEFAULT_PRINT_PATH, filename), function(err, item){
if (err){
console.log("Error received on parsing PDF: " + err, err.stack);
reject(err);
}
else if (!item) {
resolve(pdfText);
}
else if (item.text) {
if(item.text.trim() === ":") {
pdfText += item.text;
} else {
pdfText += "\n" + item.text;
}
}
});
});
}