Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 使用PdfStamper添加具有仿射变换的图像_Image Processing_Itext_Affinetransform_Pdfstamper - Fatal编程技术网

Image processing 使用PdfStamper添加具有仿射变换的图像

Image processing 使用PdfStamper添加具有仿射变换的图像,image-processing,itext,affinetransform,pdfstamper,Image Processing,Itext,Affinetransform,Pdfstamper,我使用的是PdfStamper getOverContent(),因此我可以使用标识类型的仿射变换将图像添加到输出PDF文件中 PdfContentByte content = stamper.getOverContent(1); data.image.setAbsolutePosition(desc.X,desc.Y); content.addImage(data.image,desc.transform); //content.addImage(data.im

我使用的是PdfStamper getOverContent(),因此我可以使用标识类型的仿射变换将图像添加到输出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作为参数的PdfContentByte addImage()调用的AffineTransform作为参数的示例?我已经买了你的书,但一本也买不到。

我已经检查了你的问题,我很确定你的形象得到了补充。但是:您无法看到它,因为图像的尺寸是1个用户单位乘以1个用户单位

我制作了一个示例,向您展示如何解决此问题:

在本例中,我从一个转换开始:左边框36个用户单位,底部300个用户单位。如果我用这个变换来添加图像,我会在这些坐标处添加图像,但是它太小了,用肉眼看不见


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

您的
变换是什么样子的?也许它会将图像旋转到页面可见区域之外。另外:如果您不能将
setAbsolutePosition()
(一种方便的方法,这样您就不需要定义翻译)与添加定义您自己的转换的文档相结合。我删除了对setAbsolutePosition的调用,并使用setToIdentity()作为唯一的转换,图像不会显示。。。然后添加了setToTranslation(X,Y),其中X和Y与成功案例中使用的值相同,在成功案例中,我没有将转换作为第二个参数,并且仍然没有显示图像。是否有使用AffineTransform作为参数的PdfContentByte addImage()调用的AffineTransform作为参数的示例?我买了你的书,但找不到。亲爱的布鲁诺,我感谢你的帮助。现在我已经按照你的指示做了,一切都很好。老实说,对于iText框架来说,要求缩放以正确渲染图像是没有意义的,但我再次感谢您的时间,如果您觉得合适的话,我希望能够与您的努力进行更多的合作。当心。
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();
}