PDA

View Full Version : [JAVA]itext pdf


Fede865
12-02-2011, 12:34
ciao a tutti, ho bisogno che qualcuno mi dia davvero una mano.. ho scaricato la libreria itext per manipolare i pdf in java, e l'ho importata su eclipse.
La mia è un'applicazione web, avrei bisogno di un esempio di codice che mi prenda un pdf da una cartella sul mio pc, mi estragga i dati e li metta in una tabella creata da me.Questa tabella viene visulizzata sul browser e in fine l'utente può decidere se scaricare attraverso un link il pdf completo..

Lo so che chiedo troppo, ma purtroppo nn ci riesco a farlo..e in più non so utilizzare la libreria itext..
Aiutatemi, è importante.. :( Grazieee

gokan
13-02-2011, 13:57
Ciao, ho sempre usato Itext come libreria di creazione pdf "ex novo".
Estrarre i dati da un pdf è tutt’altro che banale, facendo una veloce ricerca sul web sembra sia impossibile da fare con iText..
Devi necessariamente estrarre questi dati da un PDF?

Fede865
13-02-2011, 14:26
Ciao, ho sempre usato Itext come libreria di creazione pdf "ex novo".
Estrarre i dati da un pdf è tutt’altro che banale, facendo una veloce ricerca sul web sembra sia impossibile da fare con iText..
Devi necessariamente estrarre questi dati da un PDF?
Si si..devo estrarli per forza da pdf, perchè c'è un programma che crea dei documenti e li salva direttamente in pdf. Io devo utilizzare questi pdf per un sito, mi servono prima i dati da inserire in una tabella e poi in più da questo sito devo prevedere che l'utente posso anche scaricare l'intero pdf.
Per quando riguarda itext ho i miei dubbi perchè leggo da tante parti che serve per creare i pdf..e alcuni dicono anche per leggerli, ma io nn trovo i metodi per leggere.
Ma secondo te se io sto scrivendo delle jsp come posso leggere dei dati da pdf che ho nella cartella?
Consigliami...

gokan
13-02-2011, 20:32
A prescindere dalla difficoltà di lettura del file, dovresti :

Mettere una form di upload di file per permettere all'utente di caricare un file
Una volta caricato il file, viene la parte più bella, ossia quella di lettura del file pdf
Una volta letta i dati, costruisci tu la tabella html con i nuovi dati
Usi itext per costruire il nuovo pdf che contenga i dati della tabella html costruita al passo precedente

In bocca al lupo !

Kenger
13-02-2011, 20:57
Ciao. Io ho avuto un problema simile al tuo e per risolverlo ho usato Apache Tika. Se i file da cui devi estrarre testo sono solo pdf puoi usare direttamente pdfbox, ma il primo è molto semplice da usare.

gokan
13-02-2011, 22:08
Riciao, questa cosa di leggere il file pdf mi ha incuriosito, quindi ho provato Apache PDFBox (è ancora un incubator).
Effettivamente sembra funzionare bene :D
Ho letto un file pdf e scritto su console il contenuto senza grossi problemi di parsing.


package it.pdfbox.test;

import java.io.File;
import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFTextStripper;

public class LeggiFile {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
PDFTextStripper stripper = new PDFTextStripper("UTF8");
PDDocument doc = PDDocument.load(new File("example.pdf"));
String testo = stripper.getText(doc);
System.out.println("---Stampa il testo del file pdf--");
System.out.println(testo);
}
}


Visto che l'autore del tread non è ferratissimo, riporto il progettino eclipse nella sua interezza, 3 jar (PdfBox, PdfFontBox e CommonsLogging) più la classe di test.
http://www.megaupload.com/?d=W1QV5VBB (3.41 MB)

Fede865
14-02-2011, 15:35
Ciao.. io ho guardato il tuo esempio.. ed ho inserito il codice di prova nella mia jsp..
ma mi da delle eccezioni.. mi aiuti???
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import= "java.io.*"%>
<%@page import ="org.xml.sax.*"%>
<%@page import ="org.xml.sax.helpers.*"%>

<%@page import ="org.apache.pdfbox.pdmodel.PDDocument"%>
<%@page import ="org.apache.pdfbox.util.PDFTextStripper"%>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Avvisi</title>
</head>
<body>
<%

PDFTextStripper stripper = new PDFTextStripper("UTF8");

PDDocument doc = PDDocument.load(new File("prova.pdf"));
String testo = stripper.getText(doc);

System.out.println("---Stampa il testo del file pdf--");
System.out.println(testo);

%>
</body>
</html>

Fede865
15-02-2011, 16:33
.............................
Visto che l'autore del tread non è ferratissimo, riporto il progettino eclipse nella sua interezza, 3 jar (PdfBox, PdfFontBox e CommonsLogging) più la classe di test.
http://www.megaupload.com/?d=W1QV5VBB (3.41 MB)

le eccezioni sono queste.. ma il file c'è

java.io.FileNotFoundException: OrariCorsi.pdf (Impossibile trovare il file specificato)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:800)
at org.apache.jsp.Avvisi_jsp._jspService(Avvisi_jsp.java:78)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)

Prince_81
02-03-2011, 21:36
ciao fede, mi potresti dire come hai fatto ad importare itext in eclipse?