2013-06-24 13 views
26

Ich habe gerade angefangen, mit iText (5.4.2, neueste Version) zu arbeiten, und es gibt zwei Dinge, die ich noch nicht richtig verstanden habe.iText Querformatausrichtung und Positionierung?

  • Dokumente im Querformat erstellen. Alle Seiten sind im Porträtformat dargestellt.
  • Bilder an einer bestimmten Position einfügen (Anzahl der Millimeter von oben & links).

Ich habe den Code unten.

Document d = new Document(PageSize.A4_LANDSCAPE,0,0,0,0); 
PdfWriter writer = PdfWriter.getInstance(d, new FileOutputStream("C:/test.pdf")); 
document.open(); 
document.newPage(); 
Image img = Image.getInstance(String.format("C:/file.png")); 
img.scaleToFit(400,240); 
document.left(100f); 
document.top(150f); 
document.add(img); 
document.close(); 

Aber die Seite im Hochformat wiedergegeben wird (nicht Landschaft) und das Bild wird in der linken oberen Ecke setzen (nicht mehr als 10 und 15 Einheiten von ihm weg nach Wunsch). Was mache ich falsch?

Antwort

42

Sie verwenden PageSize.A4_LANDSCAPE, eine Variable, die von einem Mitwirkenden eingeführt wurde und die niemals zur Hauptversion hinzugefügt werden sollte. Bitte verwenden Sie stattdessen PageSize.A4.rotate().

Es ist nicht klar, was Sie mit den Linien erreichen wollen:

document.left(100f); 
document.top(150f); 

Das sind Getter, nicht Setter. Es sieht so aus, als ob Sie davon ausgehen, dass PDF ähnlich wie HTML ist. Diese Annahme ist falsch.

Wenn das Bild 10 Benutzereinheiten von links und 15 Benutzereinheiten von oben haben soll (in diesem Fall 100 und 150 sind die falschen Werte), können Sie die 0 Werte in Ihrem Document Konstruktor zu definieren ein linker Rand von 10 Benutzereinheiten und der obere Rand 15 Benutzereinheiten. Ein anderer Weg wäre, eine absolute Position für das Bild mit der Methode setAbsolutePosition() zu definieren. In diesem Fall müssen Sie beachten, dass das Koordinatensystem so ausgerichtet ist, dass die linke untere Ecke der Seite die Koordinate x = 0, y = 0 für von Grund auf neu erstellte Dokumente enthält.

1
iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate(), 10f, 10f, 10f, 0f); 
Verwandte Themen