您好如何在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
答案 0 :(得分:1)
假设您有此图像,尺寸为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
。
我们使用此Canvas
创建了一个template
对象,然后我们将图片添加到canvas
。
最后,我们使用模板创建另一个Image
。 Canvas
操作会将完整图片添加到template
,但会将其裁剪为rectangle
的大小。
您可以将此croppedImage
添加到文档中。