PDFBox - 查找页面尺寸

时间:2014-01-03 12:56:58

标签: java pdf pdfbox

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

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

但结果是(不是mm):

842.0
595.22

3 个答案:

答案 0 :(得分:30)

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

1 pt = 1/72 inch

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

mm = pt*25.4 / 72

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

脚注

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

答案 1 :(得分:5)

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

您可以编写如下方法:

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

答案 2 :(得分:1)

如果使用不同于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(web)= 595 X 842像素
  •   
  • 300 dpi(打印)= 2480 X 3508像素   (这是" A4"据我所知,即" 210mm X 297mm @ 300 dpi")
  •   
  • 600 dpi(打印)= 4960 X 7016像素
  •   
     

等等。像A4这样的FWIW文档格式由他们描述   印刷尺寸(毫米),这是一个完全不同的东西   屏幕图像(像素),这就是为什么你没有看到任何人使用像素   描述A4。 :是