PDFBox - 查找页面尺寸

Posted

技术标签:

【中文标题】PDFBox - 查找页面尺寸【英文标题】:PDFBox - find page dimensions 【发布时间】:2014-01-21 03:43:02 【问题描述】:

如何使用 PDFBox 找到(以 mm 为单位)pdf 页面的宽度和高度?目前,我正在使用这个:

System.out.println(page.getMediaBox().getHeight());
System.out.println(page.getMediaBox().getWidth());

但结果是(不是毫米):

842.0
595.22

【问题讨论】:

【参考方案1】:

PDF 中的度量单位是 points,这是一种传统的图形行业度量单位。 Adobe 使用以下定义:

1 pt = 1/72 inch

并且由于一英寸被定义为正好 25.4 毫米(真的!),您可以使用公式将点转换为毫米

mm = pt*25.4 / 72

顺便说一句,您的价值观(粗略地)转换为 210 x 297 毫米的 A4 纸尺寸。 (“松散”,有两个原因。首先:Ax 尺寸源自公制系统中的 1 平方米。点数基于英制系统(根据 Adob​​e 的用法);因此,所有点和毫米之间的转换是近似值。第二:A4 的给定值(以毫米为单位)也是四舍五入的。Ax 相对和绝对大小基于an irrational number。)

脚注

在对象流中,度量单位可以缩放为其他值。以上仅适用于***基础对象。

【讨论】:

这些值确实是近似值。 A4 的正确值(四舍五入到小数点后八位)从其定义(表面为 1/16 平方米的文档)为宽度为 210,22410381 毫米,高度为 297,30177875 毫米。以英寸和点为单位的对应值分别为 8,27653952";11,70479444" 和 595,91084546pt;842,74519961pt,供好奇者参考。 PDRectangle 源具有用于此计算的常量: POINTS_PER_INCH = 72; POINTS_PER_MM = 1 / (10 * 2.54f) * POINTS_PER_INCH,还有 A4、A5 等纸张尺寸【参考方案2】:

DTP 点的坐标定义为:1 pt = 1/72 inch = 25.4/72 mm

你可以这样写一个方法:

public float pt2mm(float pt) 
   return pt * 25.4f / 72;

【讨论】:

【参考方案3】:

如果文档是使用不同于 72 的 DPI 创建的,则使用更通用的公式:

public float pt2mmForWeb72dpi(float pt) 
   return pt2mm(pt,72);

public float pt2mmForPrint300dpi(float pt) 
   return pt2mm(pt,300);

public float pt2mmForPrint600dpi(float pt) 
   return pt2mm(pt,600);

public float pt2mm(float pt, float dpi) 
   return pt * 25.4f / dpi;

您可以在https://forums.indigorose.com/forum/indigo-rose-software/developer-s-den/13282-what-is-the-size-of-a4-in-px找到更多信息

A4 是一种文档格式,作为将依赖于的屏幕图像 图像分辨率,例如将 A4 文档调整为:

72 dpi(网络)= 595 X 842 像素 300 dpi(打印)= 2480 X 3508 像素 (据我所知,这是“A4”,即“210mm X 297mm @ 300 dpi”) 600 dpi(打印)= 4960 X 7016 像素

等等。 FWIW 文档格式(如 A4)由其描述 打印尺寸(毫米),这与打印尺寸完全不同 屏幕图像(像素),这就是为什么您看不到任何人使用像素的原因 描述 A4。 :是的

【讨论】:

PDF 默认用户空间单位(这个问题是关于它的,默认为 pt = 1/72")与 DPI 位图图像分辨率(你的答案是关于)完全无关。跨度> 我添加了这个答案,因为我遇到了以下问题。我有一个通过扫描生成的 pdf,其中我发现了一个大小为 2480x3508 像素和一个 3508x4963 的图像。我不知道该图像大小与 A4 或 A3 页面大小有何关系。经过一番挣扎,我意识到以 300 dpi 扫描的地方,一个是 A4 页面,另一个是 A3 页面。 从我在这篇文章中看到的 (***.com/a/55700705/6120066)。这个答案似乎不正确。很想听听@raisercostin 的想法。

以上是关于PDFBox - 查找页面尺寸的主要内容,如果未能解决你的问题,请参考以下文章

使用 pdfbox 编辑 pdf 页面

创建具有默认“缩放到页面级别”的 PDF 文件 (pdfbox)

访问我加载的 .pdf 页面(使用 pdfbox)(我正在使用 RPG)

PDFBOX 2.0.18 - 如何遍历 PDF 页面并检索特定字段

更改页面时出现 PdfBox 问题

使用 PDFBox 从 PDF 文档中读取特定页面