【问题标题】:How to determine natural page size of a PDF using PDF.js如何使用 PDF.js 确定 PDF 的自然页面大小
【发布时间】:2019-06-03 14:56:01
【问题描述】:

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

在下面的代码 sn-p 中,我正在提取一个打印为 PDF 的 8.5 x 11 Word 文档的缓冲区。我收到的回报是大小除以 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 页面的自然高度和宽度。

谢谢!

【问题讨论】:

  • 进一步说明,data.getViewport()返回的viewbox是[0, 0, 612, 792],无论通过什么比例
  • 希望这个帖子能帮到你github.com/mozilla/pdf.js/issues/9408
  • @window.document - 这是我看到的链接之一。但是刚刚重读它帮助我找出了答案。我得到 612/792 的原因是因为它设置了 72 dpi 的比例。 300 除以 72 = 4.166666666666667 - 所以我认为我的做法是将返回的高度/宽度乘以 300,然后除以 72。
  • 这里的 300 是什么?你能解释一下吗?

标签: javascript pdf.js


【解决方案1】:

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

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

【讨论】:

  • 嗨@Tanner,我遇到了同样的情况,你能帮帮我吗?我正在努力在 pdfjs 和实际 pdf 之间保持相同的像素。
猜你喜欢
  • 2013-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 2013-12-07
相关资源
最近更新 更多