PDFBox – 查找页面尺寸

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

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

但结果是(不是mm):

 842.0 595.22 

PDF中的测量单位是点 ,传统的图形工业测量单位。 Adobe使用以下定义:

 1 pt = 1/72 inch 

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

 mm = pt*25.4 / 72 

顺便说一下,您的值会(松散地)转换为尺寸为210 x 297 mm的A4纸张。 (“松散地”,有两个原因。第一:在公制系统中, x尺寸来自1平方米。点数基于(根据Adobe的用法)在英制系统中;因此,点和毫米之间的所有转换都是近似值。第二:A4的给定值(mm)也是圆形的.x相对和绝对尺寸是基于无理数 。)

脚注

在对象流内,可以将测量单位缩放到其他位置。 以上仅适用于顶级基础对象。

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

你可以写一个像这样的方法:

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

如果使用不同于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像素

等等。 像A4这样的FWIW文档格式是通过它们的打印尺寸(毫米)来描述的,这与屏幕图像(像素)完全不同,这就是为什么你没有看到任何人使用像素来描述A4的原因。 :是