我正在使用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();
答案 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
。