如何使用PDFBox找到(以mm为单位)pdf页面的宽度和高度?目前,我正在使用它:
System.out.println(page.getMediaBox().getHeight());
System.out.println(page.getMediaBox().getWidth());
但结果是(不是mm):
842.0
595.22
答案 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;
}
找到更多信息
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。 :是