pdf2json页面单元:它是什么?

pdf2json页面单元:它是什么?,json,pdf,pdf.js,Json,Pdf,Pdf.js,我尝试使用modestry/pdf2json,输出非常有用,但我尝试计算库使用的度量单位。他们称之为“页面单位”,根据pdf规范,这并不等于1/72(点),因为整个页面的高度有51个页面单位 有人知道这个页面单元是什么吗?在哪里可以找到有关此测量的信息 非常感谢。pdf2json生成的任何内容都与PDF.js无关(PDF.js使用标准PDF空间单元作为基础) 因此,基于: pdf2json以96dpi为单位从PDF.js获取数据 按1/4的比例缩放每个单位 因此页面单位等于(96px/英寸*

我尝试使用modestry/pdf2json,输出非常有用,但我尝试计算库使用的度量单位。他们称之为“页面单位”,根据pdf规范,这并不等于1/72(点),因为整个页面的高度有51个页面单位

有人知道这个页面单元是什么吗?在哪里可以找到有关此测量的信息


非常感谢。

pdf2json生成的任何内容都与PDF.js无关(PDF.js使用标准PDF空间单元作为基础)

因此,基于:

  • pdf2json以96dpi为单位从PDF.js获取数据
  • 按1/4的比例缩放每个单位
因此页面单位等于(96px/英寸*1inch/4)=24px

在您的示例中,高度等于51*24px=1224px,或51*0.25英寸=12.72英寸;博士 需要了解的重要一点是,x、y和元素宽度/高度是相对单位,它们与页面宽度/高度的比率相关,可以通过除以现有单位并乘以所需单位转换为任何目标比率

以下是令人厌烦的细节:

PDF没有标准的“大小”——您可以将任何您喜欢的内容打印到PDF中,包括横向或纵向、不同的页面大小(标准、A0-A5、法律、小报、自定义)等。PDF的大小以英寸为单位,因此转换为像素(包括pdf2json)不是@async5的答案中所示的固定“24px”

以编程方式获得所需结果的关键是利用解析后的PDF信息(页面宽度和页面高度),以及渲染它的方式(像素计数因显示分辨率的密度而异,但“英寸”始终是“英寸”),以及如何转换为目标分辨率

由于同一物理设备通常支持多个分辨率(更改逻辑DPI)-本机像素密度和用户设置的合成密度之间可能存在差异,因此从PDF单元转换为本地显示的基础将是由PDF文件和物理渲染版本的目标dpi之间的差异构成的比例因子。同样的想法也适用于PDF解析库,它可能使用不同于PDF文件本身的本机“72dpi”的DPI

虽然96dpi是微软的标准尺寸(72dpi是苹果的标准尺寸),但无论是选择b/c pdf2json还是pdf.js,都不能提供正确的像素偏移量。我对最终用户的显示一无所知。对于pdf2json坐标(x/y),它们只是平面上某个位置(由宽度/高度定义)之间的相对测量值。因此,标准化为8.5“x11”位置,72 dpi,操作如下:


pdfRect.x=pdfRect.x*((8.5*72)/parsedPdf.formImage.Width);
pdfRect.y=pdfRect.y*((11*72)/parsedPdf.formImage.Pages[0]。高度);

无论pdf2json的内部DPI是什么,或者坦率地说,无论您选择使用什么样的PDF解析库,这种公式都是有效的。这是因为它通过除法和乘法来抵消这些单位,使用你需要的任何单位。即使今天pdf2json在内部使用96dpi,并缩小1/4,然后更改为72dpi,并缩小1/2,上述转换为像素偏移量和dpi的数学将独立于代码更改而工作


希望这是有帮助的。当我处理这个问题时,互联网似乎缺少了一个详细的版本。许多人解决特定的源/目标解析问题(包括特定于库)或抽象地谈论它,但没有很清楚地解释其关系。

你知道为什么在第334行的pdffont.js中,它从x减去-0.25,从y减去-0.75吗?