获取PDPage / PDDocument的DPI以准确计算PDF尺寸

时间:2019-04-09 15:16:21

标签: java pdfbox dpi

作为我将要创建的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;
}

1 个答案:

答案 0 :(得分:2)

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

这与DPI值72不对应,因为这将是 resolution 值,而pdf没有分辨率,因此默认用户空间单位只是不同的测量单位