【问题标题】:Using PdfStamper to add an image with AffineTransform使用 PdfStamper 通过 AffineTransform 添加图像
【发布时间】:2015-12-06 12:47:52
【问题描述】:

我正在使用 PdfStamper getOverContent(),因此我可以使用 Identity 类型的 AffineTransform 将图像添加到输出 PDF 文件中。

    PdfContentByte content = stamper.getOverContent(1);
    data.image.setAbsolutePosition(desc.X,desc.Y);
    content.addImage(data.image,desc.transform);
    //content.addImage(data.image);

如果我使用没有转换的注释行,它可以完美地将图像添加到生成的 PDF 但使用 AffineTransform (setToIdentity()) 它不会显示。

有人可以帮我解决这个问题吗?我打算使用更复杂的转换,但身份应该首先工作......


编辑(从无效答案复制)

我删除了对 setAbsolutePosition 的调用,并使用 setToIdentity() 作为唯一的转换并且图像不显示...然后添加了 setToTranslation(X,Y),其中 X 和 Y 是成功案例中使用的相同值我没有将转换作为第二个参数,它仍然没有显示图像。是否有使用 AffineTransform 作为参数的 AffineTransform 作为参数调用 PdfContentByte addImage() 的示例?我买了你的书,但没有找到。

【问题讨论】:

  • 您的transform 是什么样的?也许它将图像旋转到页面的可见区域之外。另外:AFAIK,您不能将 setAbsolutePosition()(一种方便的方法,因此您不需要定义翻译)与添加定义您自己的转换的文档相结合。
  • 我删除了对 setAbsolutePosition 的调用,并使用 setToIdentity() 作为唯一的转换,并且图像未显示...然后添加了 setToTranslation(X,Y),其中 X 和 Y 是相同的值在我不将转换作为第二个参数并且仍然不显示图像的成功案例中使用。是否有使用 AffineTransform 作为参数的 AffineTransform 作为参数调用 PdfContentByte addImage() 的示例?我买了你的书,但找不到。

标签: image-processing itext affinetransform pdfstamper


【解决方案1】:

我已经检查了您的问题,并且很确定您的图片已添加。但是:您看不到它,因为图像的尺寸是 1 user unit x 1 user unit。

我已经做了一个例子来告诉你如何解决这个问题:AddImageAffineTransform

public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
    PdfReader reader = new PdfReader(src);
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
    Image image = Image.getInstance(IMG);
    AffineTransform at = AffineTransform.getTranslateInstance(36, 300);
    at.concatenate(AffineTransform.getScaleInstance(image.getScaledWidth(), image.getScaledHeight()));
    PdfContentByte canvas = stamper.getOverContent(1);
    canvas.addImage(image, at);
    stamper.close();
    reader.close();
}

在这个例子中,我从一个翻译开始:左边框的 36 个用户单元和底部的 300 个用户单元。如果我要使用这种转换添加图像,我会在这些坐标处添加图像,但它太小了,肉眼无法看到。

为了确保图像可见,我连接了一个比例变换,将图像缩放到 X 方向的宽度和 Y 方向的高度。

【讨论】:

  • 亲爱的布鲁诺,感谢您的帮助。现在我已经按照你的指示工作了。老实说,对于 iText 框架来说,为了正确渲染图像而需要缩放是没有意义的,但我再次感谢您的时间,并希望如果这听起来适合您,我可以与您进行更多的合作。保重。
猜你喜欢
  • 2013-12-15
  • 2011-06-23
  • 2012-01-09
  • 1970-01-01
  • 2015-11-21
  • 1970-01-01
  • 2014-01-24
  • 2014-02-17
  • 1970-01-01
相关资源
最近更新 更多