2017-09-08 298 views
1

嗨我們如何在iText中調整圖像大小7。 我現在無法在itext 7中找到用於裁剪圖像的PDFTemplate。 。Itext7 - 裁剪圖像

public Image cropImage(PdfWriter writer, Image image, float leftReduction, float rightReduction, float topReduction, float bottomReduction) throws DocumentException { 
    float width = image.getScaledWidth(); 
    float height = image.getScaledHeight(); 
    PdfTemplate template = writer.getDirectContent().createTemplate(
      width - leftReduction - rightReduction, 
      height - topReduction - bottomReduction); 
    template.addImage(image, 
      width, 0, 0, 
      height, -leftReduction, -bottomReduction); 
    return Image.getInstance(template); 
} 

這是用於iText的5

回答

1

假設你有這樣的圖像,測量900×1200像素:

enter image description here

但你只想顯示此圖像的一部分(例如乒乓球):

enter image description here

然後你可以使用這個iText的7碼:

PdfDocument pdf = new PdfDocument(new PdfWriter("cropimage.pdf")); 
Document document = new Document(pdf); 
Image image = new Image(ImageDataFactory.create(imagePath)); 
image.setFixedPosition(-20, -320); 
Rectangle rectangle = new Rectangle(300, 300); 
PdfFormXObject template = new PdfFormXObject(rectangle); 
Canvas canvas = new Canvas(template, pdf); 
canvas.add(image); 
Image croppedImage = new Image(template); 
document.add(croppedImage); 
document.close(); 

我們創建一個Image實例與完整的圖像,我們設置這樣的固定位置,我們從左邊削掉20個像素和320從底部。

我們創建一個300 x 300個用戶單位的矩形。這定義了裁剪圖像的大小。

我們使用這個矩形創建了一個PdfFormXObject。在iText 5語言中,表單XObject曾被命名爲PdfTemplate

我們用這個template創建一個Canvas對象,我們將圖像添加到canvas

最後,我們使用該模板創建另一個ImageCanvas操作會將完整圖像添加到template,但它將被裁剪爲rectangle的大小。

您可以將此croppedImage添加到文檔中。

+0

謝謝讓我檢查:) –

+0

也接受了這一個:) –