2017-09-08 4 views
1

Salut Comment pouvons-nous redimensionner l'image dans iText 7. Je n'arrive pas à trouver PDFTemplate dans itext 7 maintenant qui recadrait l'image. .Itext7 - Recadrer l'image

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); 
} 

Il est utilisé pour itext 5

Répondre

1

Supposons que vous ayez cette image de 900 x 1200 pixels:

enter image description here

Mais vous voulez seulement montrer une partie de cette image (par exemple, les balles de ping-pong):

enter image description here

Ensuite, vous pouvez utiliser ce code 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(); 

Nous créons une instance Image avec l'image complète, et nous avons mis en position fixe de telle sorte que nous puce de 20 pixels de la gauche, et 320 du fond.

Nous créons un rectangle de 300 x 300 unités utilisateur. Ceci définit la taille de l'image recadrée.

Nous créons un PdfFormXObject en utilisant ce rectangle. Dans le langage iText 5, un formulaire XObject s'appelait PdfTemplate.

Nous créons un objet Canvas avec ce template, et nous ajoutons l'image au canvas.

Enfin, nous créons un autre Image en utilisant le modèle. L'opération Canvas aura ajouté l'image complète à template, mais elle sera recadrée à la taille du rectangle. Vous pouvez ajouter ce croppedImage au document.

+0

Merci laissez-moi vérifier :) –

+0

a également accepté celui-ci :) –