Flying Saucer/iTextとは異なるページスタイルを設定する方法はありますか?私は風景のページの最初のカップルを持っている必要がありますし、特定のページとポートレートで肖像画に切り替える。Flying Saucer/iTextを使用したpdf用のランドスケープとポートレートの両方
アイデア?
Flying Saucer/iTextとは異なるページスタイルを設定する方法はありますか?私は風景のページの最初のカップルを持っている必要がありますし、特定のページとポートレートで肖像画に切り替える。Flying Saucer/iTextを使用したpdf用のランドスケープとポートレートの両方
アイデア?
Nevermind、答えを見つけました。興味のある人は、これはあなたのやり方です:
@page land { size:landscape; }
@page port { size:portrait; }
.landscapePage { page:land; }
.portraitPage { page:port; }
voilá!
Derekが言及した問題にまだまだ取り組んでいる人にとっては、レイアウトを切り替える要素に明示的に幅を設定する必要があることが分かりました。ですから、例えばdivの
<div class="portraitPage">
<p>Some page content in portrait</p>
</div>
<div class="landscapePage">
<p>Some page content in landscape</p>
</div>
でそれは正しく横長のページに続く肖像ページをフォーマットしますが、景観ページ内のコンテンツが唯一でも@pageの土地ならば、同じ幅の肖像ページとして宣言になります幅を含んでいます。私は何を必要とすることは、関連するクラスが適用されたdiv要素に直接幅を設定することでしたので、宣言は幅が考慮介して適用任意のマージンやパディングを取る必要があることが、より
.landscapePage { page:land; width: 29.7cm; }
のようなものは注意してくださいです@page宣言ブロック。
実行時に動的にページサイズを処理できます。次のステップ
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);