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

标签 java pdfbox dpi

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

据我所知,每个页面也可以有自己的 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/72 英寸。因此,只需将框的宽度或高度除以 72 即可得到以英寸为单位的页面宽度或高度。

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

关于java - 获取PDPage/PDDocument的DPI以准确计算PDF尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55596092/

相关文章:

java - 运行 GWT Map 时出错 - Maps key 是否丢失或无效?

java - PrintWriter println(String s) 方法 :\r\n not supported?

java - 使用 PDFBox 时不想在服务器端保存创建的 PDF 文件

winapi - 如何在高 DPI 显示器上获得正常大小的光标?

java - 将 mdpi 和 hdpi 屏幕的像素转换为 dpi

java - 当 ListView 中有多个项目时,读取所选项目的文本

java - 如何将上传到云存储的图片调整为指定大小?

pdfbox - 如何使用 Apache PDFBox 生成 Pdf 发票

java - 表中的值被覆盖 -PDFbox

java - 检查图像是否为灰度的可靠方法