문제

는 방법이 있을 설정하는 다른 페이지 스타일과 함께 비행 접시/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 선언 블록을 통해 적용된 여백 또는 패딩을 고려해야하지만주의하십시오.

처리할 수 있는 당신의 페이지를 동적으로 크기를 수행할 필요는 없습니다.시기 바랍에 따라 다음 단계

  1. 추가에 대한 매개 변수 페이지에 입력 e.g 가로 또는 세로로에 pageType param
  2. 다음 코드를 추가 당신의 스타일에 태그할 때를 생성하고 있다 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);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top