iText – Faire pivoter le contenu de la page lors de la création d’un fichier PDF

Je voudrais produire un PDF qui a des pages en paysage. Bien qu’il soit possible de définir la taille de la page en mode paysage à l’aide de:

document.setPageSize(PageSize.LETTER.rotate()); 

cela n’atteint pas ce que je veux car tout contenu que j’ajoute est toujours orienté à gauche -> à droite alors que j’aimerais qu’il soit en bas -> en haut.

IE c’est ce que je reçois:

droite”>

Quand ce que je veux c’est:

haut”>

J’ai pu obtenir le résultat souhaité en ouvrant le fichier PDF après l’avoir créé et en le faisant pivoter à l’ aide d’iText, mais j’aimerais une solution qui permette de le faire pivoter immédiatement avec iText après l’ajout de contenu.

Excellente question. Si je pouvais voter deux fois, je le ferais!

Vous pouvez réaliser ce que vous voulez avec un PdfPageEvent :

 public class RotateEvent extends PdfPageEventHelper { public void onStartPage(PdfWriter writer, Document document) { writer.addPageDictEntry(PdfName.ROTATE, PdfPage.SEASCAPE); } } 

Vous devez utiliser ce RotateEvent juste après avoir défini le scripteur:

  PdfWriter writer = PdfWriter.getInstance(document, os); writer.setPageEvent(new RotateEvent()); 

Notez que j’ai utilisé SEASCAPE pour obtenir l’orientation indiquée dans votre image. Vous pouvez également utiliser LANDSCAPE si vous souhaitez que la page soit orientée dans l’autre sens.

Je dois me rappeler cette question une fois que je commence à écrire une troisième édition de “iText in Action”. C’est un bel exemple de l’utilisation de l’ onStartPage() .