java pdfbox在页面中获取图像尺寸并缩小图像

java pdfbox在页面中获取图像尺寸并缩小图像,java,pdf,compression,pdfbox,Java,Pdf,Compression,Pdfbox,我正在编写代码,通过减小图像大小使pdf小于1MB的阈值来减小pdf文件的大小。我有两个问题 图像原始大小可能为1600 x 2400 px,但在页面左下角显示为200 x 300 px。在这种情况下,当我提取图像时,我得到1600 x 2400 px,我如何确定在页面上绘制的图像的尺寸。在这种情况下,如何获得200 x 300 px的数字,以便将图像缩小到该大小并显示它,从而使质量不会太差。我在pdfbox示例中查看了PrintImageLocations.java的示例,但这只告诉我实际图像

我正在编写代码,通过减小图像大小使pdf小于1MB的阈值来减小pdf文件的大小。我有两个问题

  • 图像原始大小可能为1600 x 2400 px,但在页面左下角显示为200 x 300 px。在这种情况下,当我提取图像时,我得到1600 x 2400 px,我如何确定在页面上绘制的图像的尺寸。在这种情况下,如何获得200 x 300 px的数字,以便将图像缩小到该大小并显示它,从而使质量不会太差。我在pdfbox示例中查看了PrintImageLocations.java的示例,但这只告诉我实际图像的像素大小,并且始终以用户空间单位将显示大小打印为1.0。我一直在寻找能让我以像素为单位显示图像大小的方法,但运气不好
  • 一旦确定了页面上显示的图像尺寸,我如何使用这些目标尺寸压缩图像,以便在不损失太多质量的情况下减小图像尺寸

  • 我一直在复习这些例子,并在没有太多帮助的情况下四处搜索。任何指针或样本都将不胜感激。

    我如何用这些目标尺寸压缩图像,以便在不损失太多质量的情况下减小图像大小?我如何既能吃蛋糕又能吃蛋糕?我将首先查看压缩算法,因为从1600x2400到200x300是一个巨大的信息损失。假设您的图像是一张照片,您至少需要DCT(JPEG)或JPX(JPEG2000)压缩。如果您的图像数据是特定类型的,则PDF还支持其他压缩,如单声道或灰度文档扫描。对于DCT(JPEG)压缩,也可以调整质量。你能分享你的示例pdf吗
    PrintImageLocations
    以前有一些问题,但它们已经解决了…@mkl,我希望这个帖子能引起您的注意,因为我在过去看到过您提供的很多非常有用的答案。pdf链接是。当我从pdf box 2.0.9运行PrintImageLocations.java时,我得到了pdf中所有图像的以下信息。显示大小=1.0,1.0用户空间单位显示大小=0.01388889,0.01388889英寸72 dpi渲染显示大小=0.35277778,0.35277778毫米72 dpi渲染我刚刚从当前3.0.0-SNAPSHOT版本的PDFBox运行
    PrintImageLocations
    。在这里,我在第一页的72 dpi渲染中获得了四个输出,显示大小分别为96.79599和67.75231毫米。我知道在一些2.0.x版本中,
    PrintImageLocations
    被破坏了,但我认为现在已经修复了。您可能希望使用开发代码中的
    PrintImageLocations
    类来派生代码。