2017-09-08 105 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

也接受了这一个:) –