2011-01-06 1 views

Répondre

1

Il y a un certain nombre de « boîtes » une page donnée peut avoir:

Media Box (obligatoire): La taille de la première page lors de l'impression de visualisation. Crop Box (facultatif): Remplace la zone de support. Par défaut pour correspondre à la boîte de média. Doit être un sous-ensemble ou correspondre à la boîte de média.

Il y a aussi des boîtes art/trim/bleed, mais elles sont moins importantes et moins courantes.

Ainsi, la taille de la page:

lecteur PdfReader = new PdfReader (myPath); // obtient le MEDIA BOX Rectangle pageRect = lecteur.getPageSize (1); // 1 -> première page

// récupère la case de recadrage si elle est présente, ou la boîte de média si non. Rectangle cropRect = lecteur.getCropBox (1);

// et enfin Rectangle artBox = reader.getBoxSize (1, "art"); // peut être "art", "bleed", "crop", "media", ou "trim"

Je choisirais getCropBox().

Je vous recommande également de vérifier le JavaDoc pour des choses comme ça. À tout le moins, vous auriez trouvé getPageSize() par vous-même. Non, ce n'est pas C#. Oui, c'est très utile.

http://api.itextpdf.com/

Notez également que ces Rectangles ne doivent pas être basées sur 0,0 (ce qui serait le coin inférieur gauche sur une page non réorientée). En outre, vous devez vérifier la rotation de la page, getPageRotation(int), et permuter la hauteur et la largeur si la rotation est de 90 ou 270. Il y a getPageSizeWithRotation(int), mais cela ne fonctionne qu'avec la boîte de média, donc je le ferais si je étiez-vous. Ce n'est que quelques lignes de code supplémentaires:

// 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; 
} 
Questions connexes