Question

Existe-t-il un moyen de définir différents styles de page avec Flying Saucer / iText? Il me faut les premières pages en mode paysage, puis passer en portrait sur une page donnée et en sortir.

Des idées?

Était-ce utile?

La solution

Peu importe, a trouvé la réponse. Pour ceux qui sont intéressés, voici comment procéder:

@page land { size:landscape; }
@page port { size:portrait; }
.landscapePage { page:land; }
.portraitPage { page:port; }

voil & # 225;!

Autres conseils

Pour ceux qui sont encore bloqués par le problème mentionné par Derek, j'ai constaté que je devais définir explicitement une largeur pour l'élément qui change de présentation. Donc, avec l'exemple div

<div class="portraitPage">
    <p>Some page content in portrait</p>
</div>
<div class="landscapePage">
    <p>Some page content in landscape</p>
</div>

il formatera correctement une page de portrait suivie d'une page de paysage, mais le contenu de la page de paysage ne sera aussi large que la page de portrait, même si la déclaration @page land contient une largeur. Ce dont j'avais besoin, c’était de définir la largeur directement sur la div à laquelle la classe pertinente était appliquée, de sorte que la déclaration ressemble davantage à

.landscapePage { page:land; width: 29.7cm; }

Veillez toutefois à ce que la largeur prenne en compte les marges ou les bourrages appliqués via le bloc de déclaration @page.

Vous pouvez gérer la taille de votre page de manière dynamique au moment de l'exécution. Veuillez suivre l’étape suivante

  1. Ajouter un paramètre supplémentaire pour le type de page, par exemple, paysage ou portrait dans le paramètre pageType
  2. Ajoutez le code suivant dans votre balise de style lorsque vous générez votre code HTML côté serveur, par exemple
FileOutputStream fos = new FileOutputStream(file);
ITextRenderer renderer = new ITextRenderer();
StringBuilder htmls = new StringBuilder();
htmls.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
htmls.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">");
htmls.append("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
htmls.append("<head><style type=\"text/css\">");
htmls.append("@page{ size: "+request.getParameter("pageType")}");
htmls.append("</style></head>");
htmls.append("<body><div>dynamic pdf data</div></body></html>");
renderer.getFontResolver().addFont("C:\\Windows\\Fonts\\Calibri.ttf","UTF-8",BaseFont.NOT_EMBEDDED);
renderer.setDocumentFromString(htmls.toString());
renderer.layout();
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + ".pdf\"");
renderer.createPDF(outputStream);
renderer.createPDF(fos);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top