【问题标题】:PDFBox - find page dimensionsPDFBox - 查找页面尺寸
【发布时间】: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

【问题讨论】:

    标签: java pdf pdfbox


    【解决方案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 页面。
      • 从我在这篇文章中看到的 (stackoverflow.com/a/55700705/6120066)。这个答案似乎不正确。很想听听@raisercostin 的想法。
      猜你喜欢
      • 2021-03-02
      • 2020-12-03
      • 2015-02-16
      • 2011-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      相关资源
      最近更新 更多