Javascript 如何使用PDF.js确定PDF的自然页面大小
我在发现设置中使用pdf.js来确定许多pdf文档的高度和宽度(以像素为单位) 在下面的代码片段中,我正在提取打印为PDF的8.5 x 11字文档的缓冲区。我收到的回报是大小除以4.16666 我发现如果我通过4.16667的刻度,我会非常接近文档的实际大小,通常在几百万分之一像素以内Javascript 如何使用PDF.js确定PDF的自然页面大小,javascript,pdf.js,Javascript,Pdf.js,我在发现设置中使用pdf.js来确定许多pdf文档的高度和宽度(以像素为单位) 在下面的代码片段中,我正在提取打印为PDF的8.5 x 11字文档的缓冲区。我收到的回报是大小除以4.16666 我发现如果我通过4.16667的刻度,我会非常接近文档的实际大小,通常在几百万分之一像素以内 function process(images) { //All Images in the array have the same path let pdfdoc = images[0].Im
function process(images) {
//All Images in the array have the same path
let pdfdoc = images[0].ImageFilePath
fs.readFile(pdfdoc, (err, imageBuffer) => {
let u = PDFJSLib.getDocument(imageBuffer)
images.forEach(img => {
//if we failed to read the pdf, we need to mark each page for manual review.
if(err) {
console.error(err)
postMessage({height:-1, width:-1, ImageFilePath:img.ImageFilePath, DocId:img.DocId, PageId:img.PageId})
}
else {
u.promise.then(pdf => {
pdf.getPage(img.PageNumber).then(data => {
console.log(data.getViewport(1).width)
console.log(data.getViewport(1).height)
})
});
}
})
})
}
我期望的输出是要记录到控制台的自然宽度和高度。我需要了解我应该传递的刻度,以及决定刻度值的因素。我是否可以安全地通过4.16667并知道我每次都能获得页面的自然高度和宽度
我发现与此相关的其他问题通常与将PDF传递给查看器有关——我没有这样做。同样,我的目标是简单地发现给定PDF页面的自然高度和宽度
谢谢 在进一步审查该问题时,我确定以像素为单位的输出页面大小假设DPI为72。我可以将这些值(612792)除以72,然后再乘以300,得到我期望的数字:2550和3300
let dimensions = data.getViewport(1).viewBox.map(n => n / 72 * 300)
//[ 0, 0, 2550, 3300 ]
更多信息,由
data.getViewport()
返回的viewbox是[0,0,612,792],无论大小,希望此线程帮助您@window.document-这是我看到的链接之一。但是刚才重读它帮助我找到了答案。我得到612/792的原因是因为它设置了72 dpi的刻度。300除以72=4.16667——我想我的做法是将返回的高度/宽度乘以300,然后除以72。这里的300是多少?你能解释一下吗?嗨@Tanner,我也遇到同样的情况,你能帮我吗?我正在努力维护PDFJ和实际pdf之间的相同像素。