json - pdf2json 页面单元 : What is it?

标签 json pdf pdf.js

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

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

提前谢谢了。

最佳答案

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

以下是无聊的细节:

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

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

由于相同的物理设备通常支持多种分辨率(更改逻辑 DPI) - 原始像素密度和用户设置的合成密度之间可能存在差异,因此从 PDF 单位转换为本地显示的基础将是是一个比例因子,由 PDF 文件与其物理渲染版本的目标 dpi 之间的差异组成。同样的想法适用于 PDF 解析库,它可能使用与 pdf 文件本身的 native “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 的数学运算将独立于该代码更改而工作。

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

关于json - pdf2json 页面单元 : What is it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42494394/

相关文章:

json - 位置管理器和数据管理

javascript - 使用 pdf.js 的 PDF 图像质量很差

pdf - Latex 到 PDF 错误未知 float 选项 'H' Doxygen

pdf - 在 Apache Cordova 中实现 pdf.js

PDF.js 能够创建 pdf 文件或 PDF.js 只是一个让 PDF 文件显示在网络浏览器上的功能?

arrays - 在 T-SQL 中更新/添加属性到 json 数组

python - View 函数中将查询集类型转换为 list() 错误 - 适用于 shell

javascript - 如何获取指向javascript对象属性的链接数

c# - webBrowser 控件中的 PDF 文档在关闭应用程序时导致 'The memory could not be "read"' 错误

javascript - 如何从 Acrobat PDF JavaScript 访问 Django Rest Api?