iText - Hinzufügen von externen Bild mit Chunk
Ich bin neu in iText und konfrontiert mit einem wirklich interessanten Fall über das hinzufügen von externen Bildern auf einen Absatz. Hier ist die Sache:
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("out2.pdf"));
document.open();
Paragraph p = new Paragraph();
Image img = Image.getInstance("blablabla.jpg");
img.setAlignment(Image.LEFT| Image.TEXTWRAP);
//Notice the image added to the Paragraph through a Chunk
p.add(new Chunk(img2, 0, 0, true));
document.add(p);
Paragraph p2 = new Paragraph("Hello Worlddd!");
document.add(p2);
gibt mir das Bild und "Hallo Worlddd!" - saite. Allerdings
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("out2.pdf"));
document.open();
Paragraph p = new Paragraph();
Image img = Image.getInstance("blablabla.jpg");
img.setAlignment(Image.LEFT| Image.TEXTWRAP);
//Notice the image added directly to the Paragraph
p.add(img);
document.add(p);
Paragraph p2 = new Paragraph("Hello Worlddd!");
document.add(p2);
gibt mir das Bild und den string "Hallo worlddd!" befindet sich auf der rechten Seite der Bild und eine Zeile oben.
Was ist die Logik hinter diesen Unterschied?
Es könnte nur ein Schreibfehler sein, aber in deinem ersten snippet, fügen Sie
img2
statt img
.
InformationsquelleAutor caca | 2012-06-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Verhalten, das Sie beschrieben ist, weil in der zweiten code-snippet, das den Absatz nicht anpassen, seine führende, aber passen Sie seine Breite. Wenn in der zweiten snippet, fügen Sie die Zeile
kurz vor
sehen Sie die Zeichenfolge "Hello world 1" auf der linken Seite und ein wenig über den string "Hallo Worlddd!". Wenn Sie die Ausgabe der führenden von p (System.aus.println(p.getLeading()) können Sie sehen, es ist eine geringe Anzahl (typischerweise 16) und nicht die Höhe des Bildes.
Im ersten Beispiel verwenden Sie die chunk-Konstruktor mit 4 Argumente
mit der letzten (wahren) Spruch zum einstellen der führende, so ist es gedruckt, als Sie erwartet haben.
InformationsquelleAutor Pier Luigi
Wenn Sie ein Bild hinzufügen direkt, seine Ausrichtung-Eigenschaften (set mit
setAlignment()) berücksichtigt werden. Also das Bild ist auf der linken Seite (Bild.LINKS) und der text ist gewickelt (Bild.TEXTUMFLUSS).
Wenn Sie wickeln Sie das Bild in einem Stück wird Sie so behandelt, als wäre es ein Stück
text. Also ist die alignment-Eigenschaften, spezifisch für die Bilder, sind verloren. Dies führt in der text unter dem Bild.
Wenn Sie versuchen, Bild.RICHTIG, dies wird noch deutlicher. Nichts ändert sich im ersten Beispiel: das Bild ist immer noch auf der linken Seite. Im zweiten Beispiel wird das Bild rechts ausgerichtet, und der text wird umgebrochen Links.
InformationsquelleAutor rhens