【问题标题】:Getting DPI of PDPage/PDDocument to calculate PDF Dimensions Accurately获取 PDPage/PDDocument 的 DPI 以准确计算 PDF 尺寸
【发布时间】:2019-08-30 22:34:37
【问题描述】:

作为我将要创建的 PDF 单元测试的一部分,我希望获得 PDF 中每个页面的准确大小。当我处理每个文档中具有许多不同页面大小的 PDF 时,代码会返回一个维度的 ArrayList。

AFAIK 每个页面也可以有自己的 DPI 设置。

我已经做了很多谷歌搜索,但我只是想出了这个,它只给了我部分答案,因为我仍然需要弄清楚每个页面的 DPI 是多少。

PDFBox - find page dimensions

public static ArrayList<float[]> getDimentions(PDDocument document) {
    ArrayList<float[]> dimensions = new ArrayList<>();
    float[] dim = new float[2];
    //Loop Round Each Page
    //Get Dimensions of each page and DPI
    for (int i = 0; i < document.getNumberOfPages(); i++) {
        PDPage currentPage = document.getPage(i);
        PDRectangle mediaBox = currentPage.getMediaBox();
        float height = mediaBox.getHeight();
        float width = mediaBox.getWidth();
        // How do I get the DPI now????
    }
    //Calculate Size of Page in mm  (
    //Get Dimensions of each page and DPI ( https://stackoverflow.com/questions/20904191/pdfbox-find-page-dimensions/20905166  )
    //Add size of page to list of page sizes
    //Return list of page sizes.
    return dimensions;
}

【问题讨论】:

  • “AFAIK 每个页面也可以有自己的 DPI 设置。” - PDF 没有 DPI 值,甚至在每页级别上也没有。
  • 如果我不知道 DPI,我该如何计算它们的大小?因为这个question 似乎是指这个? DPI 是否仅适用于 PDF 内的渲染位图?
  • 页面尺寸(媒体框/裁剪框)以默认用户空间单位给出,默认为 1/72 英寸。因此,只需将框的宽度或高度除以 72 即可获得以英寸为单位的页面宽度或高度。但这并不对应一个 DPI 值,因为后者是分辨率,而前者只是不同的测量单位。
  • 谢谢@mkl。这似乎奏效了。非常感激。随意添加它作为答案,我会相应地选择它。

标签: java pdfbox dpi


【解决方案1】:

页面尺寸(媒体框/裁剪框)以默认用户空间单位给出,默认为 1/72 英寸。因此,只需将框的宽度或高度除以 72 即可得到以英寸为单位的页面宽度或高度。

这不对应于 DPI 值 72,但是,因为这将是一个 分辨率 值并且 pdf 没有分辨率,所以默认的用户空间单位只是一个不同的 计量单位

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-08
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    相关资源
    最近更新 更多