Frage

Gibt es eine Möglichkeit verschiedene Seitenvorlagen mit Flying Saucer / iText zu setzen? Ich brauche die ersten paar Seiten in der Landschaft zu haben, wechseln Sie dann zu Portrait auf einer bestimmten Seite und aus.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Nevermind, fand die Antwort. Für alle Interessierten, das ist, wie Sie es tun:

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

voilá!

Andere Tipps

Für alle noch mit dem Problem stecken Derek erwähnt, habe ich festgestellt, dass ich explizit festlegen müssen eine Breite auf das Element, das das Layout wechselt. Also mit dem Beispiel div

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

es wird richtig ein Porträt Seite von einer Landschaft Seite gefolgt formatieren, aber der Inhalt in der Landschaft Seite wird nur so breit wie das Porträt Seite sein, auch wenn die @ page Land Deklaration eine Breite enthält. Was ich brauchte, war die Breite direkt auf dem div zu setzen, die die entsprechende Klasse hat angewendet, so die Erklärung ist etwas mehr wie

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

Seien Sie vorsichtig, dass die Breite Rechnung über den @page Erklärung angewandt Block keine Ränder oder Polster nehmen.

Sie können Ihre Seitengröße zur Laufzeit dynamisch handhaben. Bitte folgen Sie den folgenden Schritt

  1. Fügen Sie zusätzliche Parameter für Seitentyp z Quer- oder Hochformat in param pagetype
  2. Fügen Sie in Ihrem Stil-Tag folgenden Code, wenn Sie Ihre HTML auf Server-Seite generieren für z
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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top