2009-03-05 26 views

Respuesta

21

No importa, encontré la respuesta. Para cualquier persona interesada, esta es la forma de hacerlo:

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

voilá!

12

Para cualquier persona que todavía tenga el problema que menciona Derek, he descubierto que necesito establecer explícitamente un ancho en el elemento que está cambiando su diseño. Así que con el ejemplo div

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

se dará formato correctamente una página vertical seguida de una página horizontal, pero el contenido de la página horizontal sólo será tan amplia como la página vertical, incluso si el @ Page tierra declaración contiene un ancho Lo que necesitaba era para establecer el ancho directamente en el div que tiene la clase en cuestión se aplica, por lo que la declaración es algo más parecido a

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

tener cuidado sin embargo que la anchura debe tener en cuenta los márgenes o el relleno aplicados a través de la Bloque de declaración @page.

0

Puede manejar el tamaño de su página dinámicamente en tiempo de ejecución. Por favor, siga el siguiente paso

  1. Añadir parámetro adicional para el tipo de página por ejemplo horizontal o vertical en el parámetro quiénes somos?
  2. Agregar siguiente código en su etiqueta de estilo cuando se va a generar su html del lado del servidor para, por ejemplo
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); 
Cuestiones relacionadas