orientation et positionnement du paysage?

je viens de commencer à travailler avec iText (5.4.2, dernière version) et il y a deux choses que je n'ai pas encore réussi à clarifier.

  • Création de documents dans le paysage. Toutes les pages sont rendues portrait.
  • insertion d'images sur une position donnée (nombre de millimètres en haut et à gauche).

j'ai le code ci-dessous.

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();

mais la page est rendue en Portrait (pas en paysage) et l'image est placée dans le coin supérieur gauche (pas de 10 et 15 unités comme demandé). Ce que je fais mal?

26
demandé sur user1111929 2013-06-24 15:41:22

3 réponses

vous utilisez PageSize.A4_LANDSCAPE, une variable qui a été introduit par un contributeur et qui n'aurait jamais été ajoutées à la libération. Veuillez utiliser PageSize.A4.rotate() à la place.

Il n'est pas clair ce que vous voulez atteindre avec les lignes:

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

ce sont des getters, pas des setters. On dirait que vous supposez que PDF est similaire à HTML. Cette hypothèse est fausse.

Si vous voulez que l'image soit mis 10 unités à partir de la gauche et 15 unités utilisateur à partir du haut (en dans quel cas 100 et 150 sont les mauvaises valeurs), vous pouvez remplacer les valeurs 0 dans votre document constructor pour définir une marge de gauche de 10 unités d'utilisateur et la marge supérieure de 15 unités d'utilisateur.

une Autre solution serait de définir une position absolue de l'image avec la méthode setAbsolutePosition(). Dans ce cas , vous devez être conscient que le système de coordonnées est orienté de telle sorte que le coin inférieur gauche de la page a la coordonnée x=0, y=0 pour les documents créés à partir de zéro.

46
répondu Bruno Lowagie 2013-06-24 13:17:16
iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate(), 10f, 10f, 10f, 0f);
2
répondu Mahmaood ali 2017-07-20 08:48:16
Document d = new Document(PageSize.A4.rotate(), 10f, 10f, 10f, 0f);

cela a fonctionné pour moi je viens de couper quelques morceaux de celui ci-dessus

0
répondu denis 2018-08-23 18:13:07