pdf2json页单位:这是什么?

时间:2017-02-27 19:41:52

标签: json pdf pdf.js

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

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

非常感谢提前。

2 个答案:

答案 0 :(得分:4)

无论pdf2json产生什么与PDF.js无关(PDF.js使用标准PDF 空间单位作为基础)

所以基于https://github.com/modesty/pdf2json/blob/3fe724db05659ad12c2c0f1b019530c906ad23de/lib/pdfunit.js

  • pdf2json以96dpi为单位从PDF.js获取数据
  • 将每个单位缩放1/4

页面单位相等(96px / inch * 1inch / 4)= 24px

在你的例子中,身高等于51 * 24px = 1,224px,或51 * 0.25inch = 12.72inch

答案 1 :(得分:2)

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

以下是无聊的细节:

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

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

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

虽然96dpi是Microsoft的标准尺寸(72dpi是Apple的标准),但是选择哪一种都不能给你一个正确的像素偏移b / c pdf2json或pdf.js对最终用户显示一无所知。对于pdf2json坐标(x / y),它们只是平面上的位置(由宽度/高度定义)之间的相对测量。如此标准化为8.5“x11”位置,72dpi将按如下方式进行:

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

无论pdf2json的内部DPI是什么,这种公式都会起作用 - 或者坦率地说,无论你选择使用哪种其他PDF解析库。那是因为它通过除法取消这些单位并使用你需要的任何单位进行乘法。即使今天pdf2json内部使用96dpi和缩减1/4以后更改为72dpi并缩小1/2以上数学转换为像素偏移和dpi将独立于代码更改工作。

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