Itext7 - 裁剪图像

时间:2017-09-08 10:42:51

标签: itext7

您好如何在iText 7中调整图像大小。 我现在无法在itext 7中找到用于裁剪图像的PDFTemplate。 。

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 个答案:

答案 0 :(得分:1)

假设您有此图像,尺寸为900 x 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语言中,Form XObject曾被命名为PdfTemplate

我们使用此Canvas创建了一个template对象,然后我们将图片添加到canvas

最后,我们使用模板创建另一个ImageCanvas操作会将完整图片添加到template,但会将其裁剪为rectangle的大小。

您可以将此croppedImage添加到文档中。