Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > visualizar un fichero pdf en java

necesito visualizar un fichero pdf en java Por favor quien me pueda ayudar le agradezco
se que es por medio de la librería pdf render pero al compilar el programa e intentar abri el pdf sale el siguiente error com.sun.pdfview.PDFParseException: Expected 'xref' at start of table

julio 19, 2013 | Unregistered CommenterNicolas Archila

Hola.

Tu aplicacion es de escritorio o web, usa jsp, jsf , jquery?

Escritorio :

Si es de escritorio puedes usar el jasper viewer. Esta libreria del jasper, mostrara tu reporte (no importando el formato) en un popup. Se ve mas o menos asi :

http://a.fsdn.com/con/app/proj/jasviewer/screenshots/example1.jpg

Aqui un ejemplito:

http://gilbertadjin.wordpress.com/2009/11/22/tablemodel-as-datasource-in-jasper-reports/

Tambien puedes personalizar esta clase si deseas quitarle o agregarle otras funcionalidades ( con las que tiene es suficiente ):

http://java2s.com/Open-Source/Java/Report/jasperreports-3.7.2/net/sf/jasperreports/view/JasperViewer.java.htm

https://github.com/RockefellerArchiveCenter/ATReference/blob/master/src/org/archiviststoolkit/report/JRViewerSimple.java


Aplicacion WEB:

Si solo necesitas "visulizar el pdf", lo solucionas rapidamente con un iframe o embed:

http://codetidy.com/6250/

Donde en el src le pones la ruta de tu pdf. Lo puedes combinar con un servlet asi:

http://www.coderanch.com/t/555365/Servlets/java/Client-side-silent-print-PDF
http://stackoverflow.com/questions/1939778/how-to-display-a-pdf-document-in-jsf-page-in-iframe

Ahora si tu requerimiento es "IMPRIMIR" este tema se divide en 2 , debido a un clasico problema de los sistemas web: "La impresion desde el browser":

Impresion normal : Usando el iframe o embed, el pdf se visualizara usando el plugin del browser respectivo. Este plugin tiene un boton de impresion.
Este boton al accionarse muestra un popup de configuracion de impresora, pagina etc y al aceptar, se imprime hermosamente :).

Impresion Automatica, Directa o Silecionsa "Silent print":
Usado por ejemplo en sistemas de faturacion, en la cual despues de accionar el boton "print", directamente se imprime a la impresora por defecto, sin confirmacion alguna.
En este caso, el firefox y chrome dan soluciones :
Firefox : print.always_print_silent . Si funciona :)
Chrome : kios mode o --kiosk-printing . Si funciona :)
Internet Explorer : Como siempre internet explorer no facilita nada sino complica. Para este browser solo hay 2 soluciones :
Activex : Logra imprimir directamente pero solo html, no he logrado imprimir un pdf embebido en el browser.
ACrobat : La version de pago de adobe reader. Este producto permite insertar javascript en el pdf :

this.print({bUI: true,bSilent: true,bShrinkToFit: true});

Al insertar esta linea al pdf, al visualizarse el pdf se imprime directamente :). Pero lo que se necesita es un boton que lanze la impresion,
intente poner un boton en el pdf, para lanzar esta impresion silenciosa pero aun no lo logro:
http://blogs.adobe.com/educationleaders/2008/05/create_an_acrobat_print_button.html

Ejemplo de javascript en pdf
http://partners.adobe.com/public/developer/en/acrobat/sdk/AcroJSGuide.pdf
http://www.planetpdf.com/developer/article.asp?contentid=6828

En unos dias colgare unso ejemplos.

Saludos
http://www.youtube.com/user/ZERL1NG

julio 19, 2013 | Unregistered Commenterjrichard