bloggers bloggers

Marco Napolitano
Messaggi: 79
Stelle: 0
Data: 17/02/22
Jader Jed Francia
Messaggi: 63
Stelle: 0
Data: 18/02/21
Paolo Gambetti
Messaggi: 2
Stelle: 0
Data: 11/11/19
Katia Pazzi
Messaggi: 1
Stelle: 0
Data: 27/06/19
Ezio Lombardi
Messaggi: 11
Stelle: 0
Data: 10/04/18
Chiara Mambretti
Messaggi: 25
Stelle: 0
Data: 27/02/17
Serena Traversi
Messaggi: 3
Stelle: 0
Data: 21/07/16
Francesco Falanga
Messaggi: 8
Stelle: 0
Data: 14/06/16
Antonio Musarra
Messaggi: 2
Stelle: 0
Data: 18/11/13
Simone Celli Marchi
Messaggi: 6
Stelle: 0
Data: 09/07/13
Indietro

Come valorizzare i placeholder nei template PDF

Problema:
Compilare lato codice i campi (che in sostanza sono dei placeholder, a una chiave va inserito un valore) di un template PDF.

Soluzione:
Usare la libreria iText, che permette la manipolazione di documenti PDF.
Tramite questa libreria possiamo quindi estrarre da un PDF il form da compilare, riempire via codice i suoi campi, e salvarlo compilato in un altro PDF.

Ecco un esempio:

Per prima cosa importiamo il PDF di partenza, in cui è contenuto il template con la form da riempire, nell'oggetto PdfReader.

PdfReader reader = new PdfReader(<nome_pdf_template>);

Andiamo poi a generare il PDF di arrivo, in cui vogliamo andare a sostituire i placeholder, e creiamo un oggetto PdfStamper passandogli come parametri il nuovo file e l'oggetto PdfReader (il PDF di partenza).

PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(<nome_pdf_compilato>));

A questo punto possiamo ottenere la form del PDF e agire su essa valorizzandone i campi.

AcroFields form = stamper.getAcroFields();
form.setField(<chiave>, <valore>);


Dove la chiave è la stringa che rappresenta il placeholder e il valore è il testo che riempirà quel placeholder.

Per finire chiudiamo il documento chiamando

stamper.close();

Inserimento di immagini
Nell'esempio precendente abbiamo inserito nel placeholder del testo, ma si possono inserire anche delle immagini se il campo è predisposto per farlo, ovvero se è di tipo PushbuttonField.

Il tipo di campo si può scoprire in questo modo:

form.getFieldType(<chiave>);


Una volta appurato che il campo sia di tipo giusto, otteniamo il PushbuttonField in questo modo

PushbuttonField pushButtonField = form.getNewPushbuttonFromField(<chiaveImg>);

Poi andiamo a settare l'immagine nel campo (la classe Image è del package com.lowagie.text.)

URL path = new URL(<immagine>);
pushButtonField.setImage(
Image.getInstance(path));


e infine settiamo il campo immagine nella form usando il metodo replacePushbuttonField.

form.replacePushbuttonField(<chiaveImg>, pushButtonField.getField());

Precedente
Commenti
Nessun commento. Vuoi essere il primo.