2016-05-13 18 views
0

Ich möchte ein Bild in docx4j so skalieren, dass es der Breite des übergeordneten Elements entspricht, wenn es zu groß ist, um auf die Seite zu passen. Zum Beispiel ist es vielleicht in einer Tabellenzelle, die eine Breite oder größer als die Seite hat.Docx4j scale image to übergeordnete Element

Ich spiele gerade mit den int width = box.getContainingBlock().getWidth(); und int imagewidth = imagePart.getImageInfo().getSize().getWidthMpt();, aber die Werte scheinen nicht korrekt zu sein. Gibt es einen besseren Weg, dies zu tun?

Antwort

0

https://github.com/plutext/docx4j/commit/81fecde856e80602a168cee8d3df70269668a9dc (in 3.3.0) adressiert diesen Anwendungsfall, und fügte hinzu:

public Inline createImageInline(String filenameHint, String altText, 
      int id1, int id2, boolean link, int maxWidth) throws Exception 

aber Sie müssen die Breite der Eltern kennen.

Beispiel für die Verwendung https://github.com/plutext/docx4j/commit/279b5bcc91ff65d4dc5b88f08b8f6e9815b12563

+0

Ich habe mit dem maxWidth Parameter dieser Methode zu spielen, aber die Größen sind seltsam. Ich habe ImageSize-Objekt in mpt oder px. Ich habe dann die parentBox (InlineLayoutBox-Objekt), die eine Breite hat und die createImageInline-Methode scheint eine Breite in twips zu nehmen. Weißt du, welche Breiten ich verwenden soll? – illumi

+0

Fügen Sie das XML hinzu, das das übergeordnete Objekt darstellt. Was hat das geschaffen: Word, docx4j oder etwas anderes? – JasonPlutext