문제
는 방법이 있을 설정하는 다른 페이지 스타일과 함께 비행 접시/iText?나는 가질 필요가 처음 몇 페이지의 풍경에서,다음향을 특정 페이지 및니다.
어떤 아이디어가?
해결책
Nevermind, 대답을 찾았습니다. 관심있는 사람이라면 누구나 이것이 당신이하는 방법입니다.
@page land { size:landscape; }
@page port { size:portrait; }
.landscapePage { page:land; }
.portraitPage { page:port; }
병망!
다른 팁
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 land 선언에는 너비가 포함됩니다. 내가 필요한 것은 관련 클래스가 적용된 DIV에서 직접 너비를 설정하는 것이 었으므로 선언은 더 비슷합니다.
.landscapePage { page:land; width: 29.7cm; }
너비는 @Page 선언 블록을 통해 적용된 여백 또는 패딩을 고려해야하지만주의하십시오.
처리할 수 있는 당신의 페이지를 동적으로 크기를 수행할 필요는 없습니다.시기 바랍에 따라 다음 단계
- 추가에 대한 매개 변수 페이지에 입력 e.g 가로 또는 세로로에 pageType param
- 다음 코드를 추가 당신의 스타일에 태그할 때를 생성하고 있다 html 에서 server side e.g
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);
제휴하지 않습니다 StackOverflow