pdf2json页面单位:这是什么?

问题描述:

我尝试使用modesty/pdf2json和输出是非常有用的,但我尝试计算图书馆使用的度量单位。他们称之为“页面单位”,根据pdf规格,这不等于1/72(点),因为整个页面有高度为51的页面单位pdf2json页面单位:这是什么?

任何人都知道这是什么页面单位?我在哪里可以找到关于这种测量的信息?

非常感谢提前。

无论pdf2json产生不相关的PDF.js(PDF.js使用标准的PDF 空间单元作为碱)

因此,基于https://github.com/modesty/pdf2json/blob/3fe724db05659ad12c2c0f1b019530c906ad23de/lib/pdfunit.js

  • pdf2json从PDF获取数据在96DPI单位
  • 尺度每个单元的.js 1/4

所以页面单位等于(96PX /英寸* 1英寸/ 4)= 24px

在您的例子高度等于51 * 24像素= 1,224px,或51 * 0.25英寸= 12.72inch

+0

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

TL; DR 理解,重要的是,x,y和元件的宽度/高度是相与页面宽度/高度相关的单位可以通过除以现有单位并乘以所需单位转换为任何目标比率。

这里是无聊的细节:

PDF的没有一个标准的“大小” - 你可以打印任何你喜欢的PDF其中可能包括横向或纵向,不同的页面大小(标准,A0〜 A5,Legal,Tabloid,Custom)等。PDF的大小以英寸为单位,因此像素(包括pdf2json)的转换不是像@ async5的答案中所示的固定的“24px”。

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

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

尽管96dpi是Microsoft标准尺寸(72dpi是Apple的标准尺寸),但选择哪一个都不会给您一个正确的像素偏移b/c pdf2json或pdf.js不知道关于最终用户显示器的任何信息。对于pdf2json坐标(x/y),它们只是平面上某个位置(由宽度/高度定义)之间的相对测量值。如此标准化为8。 - 或者坦白地说,你选择使用任何其它PDF解析库

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

这种公式将工作无论pdf2json内部的DPI是什么:以72dpi的5“X11”的位置将如下进行。这是因为它可以通过划分取消这些单位,并使用任何你需要的单位进行乘法。即使今天pdf2json内部使用96dpi,缩小比例为1/4,然后更改为72dpi,缩小1/2,上述数学转换为像素偏移量和dpi将独立于代码更改。

希望这是有帮助的。当我处理这个问题时,似乎互联网错过了这个的拼写版本。许多人解决具体的具体来源/目的地解决问题(包括特定于图书馆)或抽象地谈论它,但不能很清楚地解释关系。