在PushbuttonField中旋转图像不起作用

时间:2017-05-19 07:18:36

标签: java itext

我正在使用com.itextpdf.text.Image。我有2张图片,我想把它放到模板pdf的特定字段中 将图像放入pdf没有问题,但如果图像 width 是>比身高我要旋转它。我试过这个,但它不起作用 - 没有错误,但在输出中,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();

1 个答案:

答案 0 :(得分:1)

奇怪的是,但是

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