2009-12-27 39 views

Respuesta

2

Por lo que sé, esto no es directamente posible. Puede usar Jasper Reports para generar un pdf en el lado del servidor. O bien, puede usar PrintPDF que es un complemento de Firefox para crear uno desde el navegador web.

+0

+1 para informes de jaspe, y si está utilizando jfree chart para sus gráficos, los informes de jasper los admitirán, y puede usar los mismos gráficos en su informe/pdf. – broschb

+0

jasper usa iText para generar el PDF; a menos que haya otra razón para usar Jasper, sería mejor saltar directamente a iText –

7

La forma más sencilla es probablemente a capture the HTML utilizando un Filter y convertir a PDF que mediante una API adecuado, a continuación, devolver los datos application/pdf del Filter. El soporte de envío parcial de IceFaces probablemente se pueda utilizar para capturar un subconjunto del resultado del árbol de componentes, pero probablemente tendrá que estudiar los detalles de las solicitudes HTTP IceFaces para descubrir cómo aprovechar eso.

+0

+1 para detallar cómo capturar el HTML –

+2

Ese es de hecho el camino, pero no es tan sencillo como parece. Para más detalles: http://stackoverflow.com/questions/1963158/capture-generated-dynamic-content-at-server-side/1963571#1963571 – BalusC

2

es probable que necesite lo siguiente:

  1. Captura la (X) HTML de salida de su página. Esto se puede hacer mediante el siguiente código en un servlet de los suyos:

    InputStream is = new URL("http://localhost/foo/page.jsf").openStream(); 
    
  2. transformar el contenido capturado a pdf. Consulte el renderer Flying Saucer (y adicionalmente - this thread)

  3. "Enviar" el pdf generado. Es decir, basta con escribir (impresión) el pdf a la response.getOutputStream(), y establecer una cabecera Content-Type - response.setContentType("application/pdf")

Cuestiones relacionadas