2009-03-05 25 views

Trả lời

21

Không tìm thấy câu trả lời. Đối với bất cứ ai quan tâm, đây là cách bạn làm điều đó:

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

Voila!

12

Đối với bất cứ ai vẫn còn mắc kẹt với vấn đề Derek đã đề cập, tôi đã tìm thấy rằng tôi cần phải đặt rõ ràng chiều rộng trên phần tử đang chuyển đổi bố cục của nó. Vì vậy, với các ví dụ div

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

nó sẽ định dạng một cách chính xác một trang chân dung tiếp theo là một trang nằm ngang, nhưng nội dung trong trang nằm ngang sẽ chỉ có rộng như trang dọc, ngay cả khi đất khai @page chứa chiều rộng. Cái tôi cần là để thiết lập chiều rộng trực tiếp trên div có class có liên quan áp dụng, vì vậy việc khai báo là một cái gì đó giống như

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

Hãy cẩn thận rằng mặc dù độ rộng nên đưa vào tài khoản bất kỳ lợi nhuận hoặc đệm áp dụng thông qua các @page declaration block.

0

Bạn có thể xử lý kích thước trang của mình theo kiểu động tại thời gian chạy. Hãy làm theo các bước sau đây

  1. Thêm tham số phụ cho loại trang ví dụ như phong cảnh hoặc chân dung trong pagetype param
  2. Thêm mã sau trong thẻ phong cách của bạn khi bạn đang tạo ra html của bạn ở phía máy chủ cho ví dụ
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); 
Các vấn đề liên quan