【问题标题】:Write higher resolution (DPI) Images to PDF将更高分辨率 (DPI) 图像写入 PDF
【发布时间】:2014-08-18 07:23:21
【问题描述】:

我已经看到了使用 PDFBox 根据图像 DPI 提取图像的代码,如下所示

    PDDocument  document = PDDocument.load(path);
    PDFImageWriter writer = new PDFImageWriter();
    boolean success = writer.writeImage(document, "jpg", "", 1, 1,
                 "C:\\Image Quality\\150", BufferedImage.TYPE_INT_RGB, 150);
    return document;

在上面的代码中,我可以在从 pdf 中提取图像时指定图像分辨率(150)。作为回报,分辨率越高,图像越大。

现在我想要反转它的意思是在将图像写入 PDF 时指定图像的分辨率/dpi,但是下面的代码没有提供这样的选项来指定 DPI?谁能指导我我想念的地方

PDPageContentStream contentStream = null;
contentStream = new PDPageContentStream(document, userPage);
contentStream.drawImage(img, 60, 60);       
contentStream.close();

在将图像写入 PDF 时,请指导我在哪里可以传递分辨率/DPI 参数(因为图像大于 pdf 页面大小)?

谢谢,

【问题讨论】:

  • 在回答您之前的问题时,您被告知 dpi 在 PDF 的上下文中几乎没有意义。据说您可以使用重载 drawXObject(PDXObject xobject, float x, float y, float width, float height) 来实现您的目标。
  • 是的,我明白这一点,但我看到一些在线网站在将图像转换为 PDF 时也需要online2pdf.com/convert-images-to-pdf 分辨率,所以这给我造成了混乱。现在我假设调整图像大小以适应 PDF 不会改变质量,是吗?我认为调整大小然后使用drawImage等于drawXObject方法,如果这不是这两者之间的区别,请纠正我。
  • 我认为调整大小然后使用 drawImage 等于 drawXObject 方法,如果这不是这两者之间的区别,请纠正我。 - 调整图像大小(即下采样)其原始形式,然后使用drawImage 嵌入下采样图像。另一方面,drawXObject 嵌入原始图像并对其进行缩放。因此,在高分辨率打印输出时,前者仅提供下采样、分辨率较低的图像,而后者允许输出分辨率较高的图像。
  • 非常感谢您解决了我的问题。现在我得到了高质量的 PDF,之前我正在调整大小并且它失去了质量,但现在它可以与 drawXObject 完美配合。
  • 好的,我让我的 cmets 成为一个实际的答案。

标签: image pdf pdfbox dpi


【解决方案1】:

在回答您之前的问题时,您被告知 dpi 在 PDF 的上下文中几乎没有意义。

话虽如此,艰难,你可以使用方法实现你的目标 PDPageContentStream.drawXObject(PDXObject xobject, float x, float y, float width, float height)

以原始形式调整(即下采样)图像的大小,然后使用 drawImage 嵌入下采样的图像。

另一方面,使用 drawXObject 嵌入原始图像并对其进行缩放。因此,在高分辨率打印输出时,前者仅提供下采样、分辨率较低的图像,而后者允许输出分辨率较高的图像。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 2011-05-24
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多