javascript - 如何使用 PDF.js 确定 PDF 的自然页面大小

标签 javascript pdf.js

我在发现设置中使用 pdf.js 来确定许多 PDF 文档的高度和宽度(以像素为单位)。

在下面的代码片段中,我将一个 8.5 x 11 Word 文档的缓冲区打印成 PDF。我收到的返回是大小除以 4.16666...。

我发现如果我传递 4.166666666666667 的比例,我会非常接近文档的实际大小,通常在百万分之几像素以内。


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.166666666666667 并知道我每次都获得页面的自然高度和宽度?

我发现的与此相关的其他问题通常与将 PDF 传递给查看者有关——我没有这样做。同样,我的目标是简单地发现给定 PDF 页面的自然高度和宽度。

谢谢!

最佳答案

在进一步审查这个问题时,我确定以像素为单位的输出页面大小假定 DPI 为 72。我可以将值 (612, 792) 除以 72,然后将它们乘以 300 以获得我的预期数字:2550和 3300。

let dimensions = data.getViewport(1).viewBox.map(n => n / 72 * 300)
 //[ 0, 0, 2550, 3300 ]

关于javascript - 如何使用 PDF.js 确定 PDF 的自然页面大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56429896/

相关文章:

javascript - VueJs : Focus on Input using v-el Directive inside v-repeat Directive

javascript - 三个 JS 在缩放时保持标签大小

javascript - 为什么在循环中使用 "var"?

javascript - 如何在 ASP Web 表单中通过 pdf.js 打印 pdf

javascript - 错误 : Unknown action from worker: ReaderHeadersReady when loading a PDF using PDF. js

javascript - 使用字节数组中的 PDF.JS 和 AngularJS 渲染 PDF

Javascript - 试图延迟遍历 for 循环

javascript - 类型错误 : Illegal Invocation console. 日志

angular - 我可以将 pdf.js 与 angular2 一起使用吗

internet-explorer - ng2-pdfjs-viewer 检索 PDF 时 Internet Explorer 11 出现意外服务器响应 (500)