gpt4 book ai didi

javascript - 如何在通过 puppeteer 创建的单个 pdf 中查找页数

转载 作者:行者123 更新时间:2023-11-30 13:52:30 27 4
gpt4 key购买 nike

我目前正在尝试查找单个 pdf 中的页数/puppeteer.page 根据要求创建的 pdf 文件的总大小是多少

这是我做的:

    try {
const generatedPdfFilePath = `${directory}/feedback-${requestId}.pdf`;
const htmlFilePath = `${directory}/report-${requestId}.html`;
const htmlTemplate =
fs.readFileSync(path.join(process.cwd(), '/data/feedback-template.hbs'), 'utf-8');
const template = handlebars.compile(htmlTemplate);
const htmlFile = minify(template(data), {
collapseWhitespace: true,
});
fs.writeFileSync(htmlFilePath , htmlFile);
const options = {
format: 'A4',
printBackground: true,
path: generatedPdfFilePath ,
};
const browser = await puppeteer.launch({
args: ['--no-sandbox'],
headless: true,
});
const page = await browser.newPage();
await page.goto(`file://${htmlFilePath}`, {
waitUntil: 'networkidle0',
timeout: 300000,
});
await page.pdf(options);
// Do something here to find number of pages in this pdf
await browser.close();
resolve({ file: generatedPdfFilePath });
} catch (error) {
console.log(error);
reject(error);
}

到目前为止,我所做的是为 pdf 创建一个 html 模板,然后使用 puppeteer,nodejs 的 headless chrome 生成页面所需的 pdf。但现在我有点卡住了,因为我想知道这个 pdf 文件中实际有多少页,或者换句话说,我需要进一步计算的 pdf 的大小是多少。为了方便起见,我在这里只提到了相关代码。

此外,我对 puppeteer 操作还很陌生,有人可以解释一下我如何才能获得此 pdf 的详细信息。我一直在寻找很长一段时间,但没有运气。 Puppeteer 的文档在任何情况下都无济于事,没有详细说明我们为什么做我们所做的事情。我得到的只是有关 pdf 选项的详细信息.. docs

如有任何帮助,我们将不胜感激。

最佳答案

您可以使用 pdf-parse Node 模块,像这样:

const fs = require('fs');
const pdf = require('pdf-parse');

let dataBuffer = fs.readFileSync('path to PDF file...');

pdf(dataBuffer).then(function(data) {

// number of pages
console.log(data.numpages);
});

你的代码会变成这样:

const pdf = require('pdf-parse');
try {
const generatedPdfFilePath = `${directory}/feedback-${requestId}.pdf`;
const htmlFilePath = `${directory}/report-${requestId}.html`;
const htmlTemplate =
fs.readFileSync(path.join(process.cwd(), '/data/feedback-template.hbs'), 'utf-8');
const template = handlebars.compile(htmlTemplate);
const htmlFile = minify(template(data), {
collapseWhitespace: true,
});
fs.writeFileSync(htmlFilePath , htmlFile);
const options = {
format: 'A4',
printBackground: true,
path: generatedPdfFilePath ,
};
const browser = await puppeteer.launch({
args: ['--no-sandbox'],
headless: true,
});
const page = await browser.newPage();
await page.goto(`file://${htmlFilePath}`, {
waitUntil: 'networkidle0',
timeout: 300000,
});
await page.pdf(options);
// Do something here to find number of pages in this pdf
let dataBuffer = fs.readFileSync(htmlFilePath);
const pdfInfo = await pdf(dataBuffer);
const numPages = pdfInfo.numpages;

await browser.close();
resolve({ file: generatedPdfFilePath });
} catch (error) {
console.log(error);
reject(error);
}

关于javascript - 如何在通过 puppeteer 创建的单个 pdf 中查找页数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57968966/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com