Itext7 - 裁剪图像

Itext7 - Crop Image

你好我们如何在 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

假设您有这张图片,尺寸为 900 x 1200 像素:

但您只想显示此图片的一部分(例如乒乓球):

然后你可以使用这个 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.

我们用这个 template 创建一个 Canvas 对象,然后我们将图像添加到 canvas

最后,我们使用模板创建另一个 ImageCanvas 操作会将完整图像添加到 template,但会被裁剪为 rectangle.

的大小

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