java - 在 PushbuttonField 中旋转图像不起作用

标签 java itext

我正在使用com.itextpdf.text.Image。我有 2 张图像,我想将其放入模板 pdf 的特定字段中。
我可以将图像放入 pdf 中,但如果图像宽度大于高度,我想旋转它。我已经尝试过这个,但它不起作用 - 没有错误,但输出的 pdf 图像没有按预期旋转。

Image a = Image.getInstance(front);
if(a.getWidth()>a.getHeight()) {
    a.setRotationDegrees(90); 
    a.setAbsolutePosition(0, 0);
}

PdfReader reader = new PdfReader("C:/Users/Desktop/Template.pdf");  
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("C:/Users/Desktop/out.pdf")); 
AcroFields form = stamper.getAcroFields();

PushbuttonField ad = form.getNewPushbuttonFromField("Front");
ad.setLayout(PushbuttonField.LAYOUT_ICON_ONLY);
ad.setProportionalIcon(true);
ad.setImage(a);
form.replacePushbuttonField("Front", ad.getField());

stamper.setFormFlattening(true);
stamper.close();
reader.close();

最佳答案

奇怪的是,但是

img.setRotationDegrees(90);
pushbuttonField.setImage(img);

不在 PushbuttonField 内旋转图像。所以我用 PdfTemplate 做到了。

PdfReader reader = new PdfReader("D://testPdf.pdf");
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("D://stamperPdf.pdf"));
AcroFields form = stamper.getAcroFields();

// get Image and rotate it
Image img = Image.getInstance("D://testImg.png");
img.setRotationDegrees(90);
img.setAbsolutePosition(0, 0);

// create template with scaled width and height
PdfTemplate tp = PdfTemplate.createTemplate(stamper.getWriter(), img.getScaledWidth(),
                                            img.getScaledHeight());
tp.addImage(img);


PushbuttonField field = form.getNewPushbuttonFromField("Field");
field.setLayout(PushbuttonField.LAYOUT_ICON_ONLY);
field.setProportionalIcon(true);
field.setTemplate(tp);  // set template with image to field
form.replacePushbuttonField("Field", field.getField());

作为输出 - 在 PushbuttonField 中按比例缩放的旋转图像。

关于java - 在 PushbuttonField 中旋转图像不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44063824/

相关文章:

java - 在抽象方法中使用子类作为参数和返回类型

java - 从元数据获取 Nova 服务器

java - HashMap - 正确用法?

java - 使用 iText 将 XML 文件嵌入 PDF 中

java - 使用类似于 @Size 的参数进行自定义 JPA Bean 验证

java - Web 服务方法结果的类是什么?

java - 设置 setSkipFirstHeader(true) 时,iText 5.5.3 PdfPTable.keepRowsTogether() 无法按预期工作

java - 数字签名证书设置颁发者名称

java - FlyingSaucer R8 兼容的最高 Itext 是多少?

java - 表格单元格内的前导段落