我尝试使用谦逊/pdf2json,输出非常有用,但我试图计算库使用的度量单元。他们称它为“页面单位”,而根据pdf规范,这并不等于1/72 (点),因为整个页面的高度上有51个页面单位
有人知道这个页面单元是什么吗?我在哪里能找到关于这个测量的信息?
在此之前,非常感谢您。
发布于 2017-02-28 13:55:40
pdf2json产生的任何东西都与PDF.js无关(PDF.js使用标准的PDF空间单位作为基础)
因此,基于https://github.com/modesty/pdf2json/blob/3fe724db05659ad12c2c0f1b019530c906ad23de/lib/pdfunit.js:
因此,页面单位等于(96 So /英寸*1英寸/ 4) =24 So。
在您的示例中,高度等于51 *24 In =1,224 In,或51 *0.25英寸=12.72英寸。
发布于 2017-09-07 21:03:04
重要的是,x、y和元素的宽度/高度是相对单位,与页面宽度/高度相关的比率可以通过除以现有单元并乘以所需的单位来转换成任何目标比。
下面是一些令人厌烦的细节:
PDF没有标准的“大小”--你可以打印任何你喜欢的PDF格式,可能包括景观或肖像方向,不同的页面大小(标准,A0-A5,法律,小报,自定义等)。PDF的大小是英寸,所以转换到像素(包括pdf2json)不是固定的“24 as”,正如@异步5的答案所示。
以编程方式获得所需结果的关键是利用已解析的PDF信息(页面宽度和页高)以及需要如何呈现它(像素计数随显示分辨率的密度而变化,但“英寸”始终是“英寸”),以及如何将其转换为目标分辨率。
由于同一物理设备通常支持多个分辨率(更改逻辑DPI) --本机像素密度与用户设置的合成密度之间可能存在差异,因此将PDF单元转换为本地显示的基础将是一个比例因子,它由PDF文件和物理呈现版本的目标dpi之间的差异组成。这同样适用于PDF解析库,它可能使用与pdf文件本身的本机“72 DPI”不同的DPI。
虽然96 don是微软的标准尺寸(72 don是苹果的标准),但选择这两者都不能给出正确的像素偏移量b/c pdf2json或pdf.js不知道终端用户显示器的任何信息。对于pdf2json坐标(x/y),它们只是平面上某一位置(由宽度/高度定义)之间的相对测量。因此,将72 done标准化为8.5"x11“位置如下所示:
`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内部使用96 dpi和降比例尺1/4,然后改为72 dpi,向下缩放1/2,上述转换为像素偏移量和dpi的数学将独立于该代码更改。
希望这会有帮助。当我处理这个问题的时候,互联网似乎漏掉了一个拼出来的版本。许多人解决具体的源/目标解决问题(包括特定于库),或者抽象地谈论它,但没有非常清楚地解释这种关系。
https://stackoverflow.com/questions/42494394
复制相似问题