2011-01-06 13 views

Antwort

1

Es gibt eine Reihe von verschiedenen „Boxen“ eine bestimmte Seite haben:

Media Box (erforderlich): Die anfängliche Seitengröße bei der Anzeige zu drucken. Crop Box (optional): Ersetzt die Medienbox. Der Standardwert entspricht der Medienbox. Muss eine Untergruppe sein oder der Medienbox entsprechen.

Es gibt auch Kunst/Trim/Bleed-Boxen, aber sie sind nicht so wichtig und sind viel weniger üblich.

Also, die Seitengröße:

PdfReader reader = new PdfReader (myPath); // erhält die MEDIA BOX Rechteck pageRect = reader.getPageSize (1); // 1 -> erste Seite

// erhält die Beschnittbox, falls vorhanden, oder die Medienbox, falls nicht. Rechteck cropRect = reader.getCropBox (1);

// und schließlich Rectangle artBox = reader.getBoxSize (1, "art"); // könnte "art", "bluten", "crop", "media" oder "trim" sein

würde ich mit getCropBox() gehen.

Ich empfehle auch, die JavaDoc für solche Dinge auschecken. Zumindest hätten Sie getPageSize() auf eigene Faust gefunden. Nein, es ist nicht C#. Ja, es ist sehr nützlich.

http://api.itextpdf.com/

Beachten Sie auch, dass diese Rechtecke müssen nicht auf 0,0 basieren (die der linken unteren Ecke auf einer nicht gedrehten Seite wäre).

Weiter sollten Sie die Drehung der Seite überprüfen, getPageRotation(int), und tauschen Sie Höhe und Breite, wenn die Drehung 90 oder 270 ist. Es gibt getPageSizeWithRotation(int), aber es funktioniert nur mit der Medienbox, also würde ich es tun, wenn ich warst du. Es sind nur ein paar zusätzliche Zeilen Code:

// rotation has to be 0, 90, 180, or 270. "360" isn't kosher IIRC. 
if (reader.getPageRotation(pageNum) % 180 != 0) { 
    float tmp = width; 
    width = height; 
    height = tmp; 
}