2017-05-19 21 views
0

我正在使用com.itextpdf.text.Image。我有2個圖像,我想把它放到模板pdf的特定字段中。
我沒有問題把圖像放到pdf中,但如果圖像寬度是>高度我想旋轉它。我試過這個,但它不起作用 - 沒有錯誤,但在輸出PDF圖像不按預期旋轉。在PushbuttonField中旋轉圖像不起作用

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

在'ad1.setImage(b);'行中,'b'從哪裏來? – javahippie

+2

您應該從示例中刪除所有無關緊要的代碼,這會讓您更容易理解您的問題。 – javahippie

+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

+0

非常感謝你!有用! –