Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用PDF.js确定PDF的自然页面大小_Javascript_Pdf.js - Fatal编程技术网

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

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

我在发现设置中使用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].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之间的相同像素。