View Full Version : [Java + PDF] Compilare file pdf
franksisca
31-08-2007, 14:12
ragazzi, io dovrei compilare una quantitativo non indifferente di file pdf, e quindi vorrei creare una applicazione, dato che questa compilazione non è solo ora e basta.
Con la libreria iText, è possibile farlo???
come posso fare per avere i dati (intendo pixel dove inserire il testo) precisi???
grazie
DigitalKiller
31-08-2007, 14:30
ragazzi, io dovrei compilare una quantitativo non indifferente di file pdf, e quindi vorrei creare una applicazione, dato che questa compilazione non è solo ora e basta.
Con la libreria iText, è possibile farlo???
come posso fare per avere i dati (intendo pixel dove inserire il testo) precisi???
grazie
Io utilizzo proprio iText per compilare i form di alcuni pdf. Per fare questo, mi sono creato un modello pdf contenente il form da compilare. Da java, apro il modello pdf, compilo il form e salvo la copia del pdf con il form compilato
franksisca
31-08-2007, 15:02
Io utilizzo proprio iText per compilare i form di alcuni pdf. Per fare questo, mi sono creato un modello pdf contenente il form da compilare. Da java, apro il modello pdf, compilo il form e salvo la copia del pdf con il form compilato
si, ok, grazie, ma io mi chiedevo come fare a calcolare alla perfezione i pixel per l'inserimento dei dati, dato che saranno fogli che poi dovrò stampare e portare in giro......non posso mica andare a tentativi......e poi, siccome non l'ho mai utilizzato per modificare un file già esistente, come faccio a inserire con itext i dati???
apro normalemtne o devo aprire in un determinato modo particolare???
DigitalKiller
31-08-2007, 15:14
si, ok, grazie, ma io mi chiedevo come fare a calcolare alla perfezione i pixel per l'inserimento dei dati, dato che saranno fogli che poi dovrò stampare e portare in giro......non posso mica andare a tentativi......e poi, siccome non l'ho mai utilizzato per modificare un file già esistente, come faccio a inserire con itext i dati???
apro normalemtne o devo aprire in un determinato modo particolare???
Ma i pdf in cui devi andare a scrivere sono tutti uguali?
franksisca
31-08-2007, 15:31
Ma i pdf in cui devi andare a scrivere sono tutti uguali?
sono 6-7 modelli, tutti diversi, io scelgo nel mio programma il modello, e tramite una specie di form lo compilo
franksisca
31-08-2007, 15:41
inoltre, itext 2.0.4 dà problemi con la jdk 6????
e come lo installo su eclipse???
ho seguito la guida sul sito ma non l'ho capita :doh: :doh: :doh: :doh:
DigitalKiller
31-08-2007, 15:43
sono 6-7 modelli, tutti diversi, io scelgo nel mio programma il modello, e tramite una specie di form lo compilo
Immagino che in questi pdf tu abbia già definito la struttura del form, magari creandola con word o excel e poi convertendola appunto in pdf.
Ora, dovresti aprire ognuno di questi modelli con acrobat (non il reader!) o, se esiste, un altro software che permetta di farlo e dovresti creare, con l'apposita funzione, dei campi. Questi campi non sono altro che dei "segnaposto" trasparenti, posizionati sul tuo form (quello creato con word o excel) in cui tu andrai a scrivere tramite il tuo programma java.
Ti faccio un esempio preso da un mio programma che genera la copertina di un fax.
Ho creato la copertina in word inserendo tra gli altri i campi:
1) Mittente
2) Destinatario
3) Oggetto
Ho convertito il documento di word in pdf. Con acrobat ho sovrapposto i campi:
1) Mittente
2) Destinatario
3) Oggetto
Ora, da mio programma java, per creare la copertina fax con i campi compilati, faccio in questo modo:
form1.setField("Mittente", textMittente.getText());
form1.setField("Destinatario", textDestinatario.getText());
form1.setField("Oggetto", textOggetto.getText());
Spero di essere stato abbastanza chiaro. Se hai ancora dubbi, chiedi pure:)
DigitalKiller
31-08-2007, 15:47
inoltre, itext 2.0.4 dà problemi con la jdk 6????
e come lo installo su eclipse???
ho seguito la guida sul sito ma non l'ho capita :doh: :doh: :doh: :doh:
No, che io sappaia non dà problemi con jdk6. Ho scritto il programma di cui sopra proprio con queste versioni e non ho incontrato grosse difficoltà.
Per l'installazione non ho seguito nessuna guida.:D Non so se è corretto o meno, ma io ho una cartella in cui salvo tutte le librerie java che utilizzo e poi dalle proprietà del progetto eclipse collego le librerie necessarie
franksisca
31-08-2007, 16:15
ho solo i file pdf.......poi, praticamente, tu mi stai dicendo che se metto un campo che accetta dati itext me lo riconosce????
DigitalKiller
31-08-2007, 16:25
ho solo i file pdf.......poi, praticamente, tu mi stai dicendo che se metto un campo che accetta dati itext me lo riconosce????
Si, creando sul pdf un campo, hai la possibilità di valorizzare questo campo tramite itext
franksisca
29-04-2009, 15:53
riesumo perchè mi sono messo a lavorarci su...ma non ho capito un caxxo :D
allora, io devo fare la collezzione dei miei CD:
per ogni cd ho numero canzone, artista, titolo e durata.
ho fatto un pdf "preconfezionato" con alcune immagini e la tabella.
ora, siccome voglio usare questo file pdf come "struttura", posso aggiiungere , riga per riga, il testo tramite un programma java con iText???
se si come???
il form1 che usi tu a cosa si riferisce??? PdfReader reader = new PdfReader("files/unica.pdf");
PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(
"stamped.pdf"));
PdfWriter scrittore = stamp.getWriter();
PdfAcroForm acro = scrittore.getAcroForm();
PdfFormField numeroCanzone;
acro.setTextFieldParams(numeroCanzone, "a", "b", 5f, 5f, 5f, 5f);
stamp.close();
ho provato un questo modo ma non ci sono riuscito (ovviamente unica è il file "sorgente")...mi dà errore e non capisco (non si esegue, mi dà errore in compilazione perchè ovviamente numeroCanzone non è inizializzato...)
chi mi può aiutare,?
Ciao, se ne hai voglia, potresti dare un occhiata alla libreria jasper report.
In pratica, realizzi il template (un file xml con estensione jrxml) del tuo pdf.
Questo template lo puoi fare utilizzando iReport con una certa facilità.
A partire dal file jrxml, viene creato un file .jasper e poi direttamente il pdf.
franksisca
29-04-2009, 16:20
allora....ho risolto :D
public static void main(String[] args) throws IOException,DocumentException {
PdfReader reader = new PdfReader("files/unica.pdf");
PdfStamper stamp = new PdfStamper(reader, new FileOutputStream("stamped.pdf"));
AcroFields acro= stamp.getAcroFields();
acro.setField("Canzone", "ciao");
stamp.setFormFlattening(true);
stamp.close();
}il file "originale resta "salvo", e viene creata la copia stamped:
nel file sorgente avevo creato un form con acrobat professional chiamato canzone in corrispondenza di dove mettere il titolo della canzone, nel nuovo file sarà riempito con il testo "ciao" e grazie alla chiamata al metodo stamp.setFormFlattening(true); non sarà ulteriormente editabile.
ora vedo di continuare a lavorarci, e spero che questo possa essere utile ad altri ;)
gokan non ho capito cosa vuoi dire...mi spieghi più dettagliatamente il tuo processo please.
Non è esattamente il mio processo, piuttosto il funzionamento di questa libreria.
A partire da un file jrxml, che non è altro che una rappresentazione del tuo pdf senza i dati dentro, la libreria, ti consente di creare un pdf passando da un file semicompilato con estensione .jasper.
quindi:
jrxml -> jasper ->pdf
Se vuoi, ovviamente, non è necessario ogni volta compilare il file jrxml e puoi partire direttamente dal file .jasper
Quel template/file jrxml lo puoi creare con più facilità attraverso l'uso di un interfaccia grafica..cioè iReport :)
franksisca
29-04-2009, 16:58
Non è esattamente il mio processo, piuttosto il funzionamento di questa libreria.
A partire da un file jrxml, che non è altro che una rappresentazione del tuo pdf senza i dati dentro, la libreria, ti consente di creare un pdf passando da un file semicompilato con estensione .jasper.
quindi:
jrxml -> jasper ->pdf
Quel template/file jrxml lo puoi creare con più facilità attraverso l'uso di un interfaccia grafica..cioè iReport :)
capito...ma siccome sto scimunendo (ho scoperto anche come inserire immagini) preferisco continuare così :D
grazie comunque per l'interessamento :D
si immaginavo..jasper report è un pò più potente e sicuramente nel tuo caso è più conveniente proseguire con iText.
Good luck
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.