Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Gestire documenti PDF e altri formati con iText

La libreria per manipolare flussi documentali nei formati più importanti, primo tra tutti il PDF
La libreria per manipolare flussi documentali nei formati più importanti, primo tra tutti il PDF
Link copiato negli appunti

Il PDF è il noto standard per i documenti introdotto da Adobe negli anni novanta, che consente di rendere le informazioni, provenienti da un qualsiasi sistema, accessibili a chiunque e dovunque, persino su dispositivi mobili.

Le caratteristiche che ne hanno decretato il successo presso aziende e pubbliche istituzioni, sono principalmente:

  • sicurezza, le informazioni inserite in un file PDF possono essere cifrate
  • affidabilità, la resa è sempre fedele all'originale
  • estensibilità, grazie ai plug-in che di continuo vengono sviluppati e che consentono di arricchire la già ampia gamma di informazioni stipabili in un file PDF
  • indipendenza dalla piattaforma, un PDF è fruibile su moltissime piattaforme (Linux, Windows, MAC OS, etc.)
  • standard aperto, che quindi può continuamente essere esteso ed arricchito

Vista la diffusione di questo formato, uno standard de facto per l'interscambio di documenti, è naturale cercare di automatizzare il processo di trasformazione di documenti, generati in altri formati, in documenti PDF da rendere disponibili via Web.

Gli odierni Application Server forniscono nativamente strumenti di conversione dei documenti in RTF e HTML, ma non in PDF. iText può colmare questo gap, poiché mette a disposizione una serie di funzionalità per creazione e la manipolazione dei file PDF.

Le caratteristiche di iText

Ecco un breve elenco delle cose che iText ci permette di fare, che vanno anche oltre la creazione di PDF:

  • Generare simultaneamente output multipli, come HTML, XML, RTF e qualsiasi stream di output di Java
  • Gestire template personalizzati per ognuno degli output, in termini di font, dimensioni e colori, formattazione delle sezioni dei documenti
  • Operare con le immagini, con il supporto di formati differenti
  • Scrivere tabelle nei documenti mediante le API (quindi, a livello applicativo) e gestire queste ultime (ampia capacità di personalizzazione)
  • Inserire digital watermark (una sorta di filigrana digitale che contrassegna permanentemente il documento) nei documenti PDF preesistenti
  • Gestire la cifratura e quindi livelli personalizzati di sicurezza per i documenti generati

Le caratteristiche appena elencate mostrano come iText sia molto più che un semplice framework per la conversione di documenti in PDF, iText può essere usato come strumento per la manipolazione dinamica dei documenti all'interno di un processo documentale ad esempio, ovvero in tutti quei processi di back-office che richiedono capacità spinte di gestione e conversione tra documenti di diversi formati.

Le classi

Analizziamo le principali classi generali (valide per un qualsiasi formato di output) che iText mette a disposizione. Grazie ad esse possiamo realizzare documenti ed esportarli in uno dei formati gestibili con iText, semplicemente modificando il writer del documento.

Classe Descrizione
Document rappresenta un generico documento di iText valido per qualsiasi formato di output
Chunk è la più piccola parte di testo significativa che può essere aggiunta all'interno di un Document
Phrase è semplicemente un insieme di Chunk che può essere inserito, in maniera immediata, all'interno di un Document
Paragraph è un insieme di Phrase e/o Chunk opportunamente disposti e formattati
Section è una parte del Document costituita da un insieme di Paragraph opportunamente disposti
Chapter è per iText una speciale Section atta a contenere, appunto, un insieme Section opportunamente sequenziate
PageSize è un contenitore per un insieme predefinito di rettangoli che rappresentano altrettanti formati di pagine standard (es. A4, A3, etc.)
Font è un contenitore per tutte le principali caratteristiche dei font digitali (es. font family, size, color, etc. )
DocWriter è una classe astratta che rappresenta un writer generalizzato a partire dal quale si effettuano le specifiche implementazioni per i writer di formati ben definiti (es. PDF o HTML)

Le classi illustrate in tabella sono la base di partenza teorica per la realizzazione di documenti iText, approfondiamo ora alcune particolarita riguardo la creazione di documenti PDF e di documenti XML o RTF o anche HTML, e la manipolazione di documenti PDF preesistenti e archiviati sul file system.

La creazione di PDF

La creazione di un documento PDF passa per la realizzazione di un Document di iText, il quale dovrà semplicemente essere scritto sull'output stream di un file con estensione .pdf. Per realizzare la scrittura del documento su un certo stream PDF, è necessario utilizzare l'apposito writer, ereditato dal DocWriter, che prende il nome di PDFWriter.

Il PDFWriter di iText è una specifica implementazione di writer che cura la scrittura di Document su di uno stream PDF. Sfrutta una factory che restituisce un'istanza statica del writer, a partire dalla quale, con chiamate successive sarà possibile redirigere l'output di uno stesso Document iText su file PDF diversi sul disco.

L'utilità di questa modalità operativa, può risiedere, ad esempio, nel voler aggiungere caratteristiche peculiari (quali attachment, immagini, commenti, etc. ) ad un Document precedentemente creato e scritto in un file PDF, e di realizzare un nuovo PDF con le modifiche apportate; tutto ciò sfruttando un'istanza singleton del writer.

La creazione di RTF, HTML e XML

Il processo di generazione di documenti RTF, HTML e XML, a partire da un certo Document, è molto simile a quello descritto per il formato PDF.

Il writer RTFWriter consente di scrivere su un output stream rediretto ad un file RTF. I file RTF, ovviamente, non supportano caratteristiche quali watermark e cifratura del testo, caratteristiche specifiche del formato PDF (nel contesto di utilizzo iText). Con le nuove versioni della libreria, il writer RTF è stato perfezionato e rilasciato come RTFWriter2 che è consigliabile utilizzare.

Quanto sopra vale, ovviamente, per i file XML e HTML, per i quali il processo di creazione è praticamente lo stesso.

La gestione di file PDF preesistenti

Come detto, iText è anche uno strumento molto potente per manipolare PDF preesistenti. Il package com.lowagie.text.pdf di iText è dedicato alla creazione e manipolazione dei file in formato PDF. Analizzando le classi all'interno del package, si può notare come siano ampie le possibilità di manipolazione di documenti PDF preesistenti. Ecco un breve elenco delle operazioni di modifica più utili e frequenti:

  1. merge (fusione) di due o più file PDF
  2. split (suddivisione) di un file PDF in un certo numero di file
  3. aggiunta di digital watermark
  4. aggiunta di codici a barre
  5. formattazione del testo in due o più colonne
  6. inclusione di annotazioni
  7. cifratura delle informazioni contenute in un PDF

Ecco le classi pricipali per la modifica di documenti in formato PDF:

Classe Descrizione
PDFDocument consente di trasformare un qualsiasi Document in un PDF di una o più pagine
PDFReader consente all'applicazione di recuperare il contenuto di un file PDF stipato su disco
PDFContentByte consente di prelevare (da un file) e posizionare (in un file) il contenuto in byte di testo ed immagini
PDFImportedPage consente di importare un'intera pagina di un file PDF
Barcode raggruppa un insieme di funzionalità atte a creare e gestire barcode di svariati tipi
MultiColumnText consente di agire direttamente sulla formattazione del testo di un documento, e di renderne il testo su due o più colonne (identificate da appositi Rectangle di iText)
PDFAnnotation consente di inserire delle note o annotazioni all'interno del documento, associandole ad una certa pagina
PDFEncryptor consente di cifrare le informazioni presenti in un PDF preesistente: come encryptor (cifratore/codificatore), prende in input il PDF che si vuole cifrare e restituisce un PDF con lo stesso contenuto, ma cifrato

Esiste una vasta gamma di altre modifiche che è possibile apportare ad un PDF con iText. Per approfondire è possibile trovare più informazioni direttamente dalla JavaDOC della libreria.

Nel prossimo articolo dedicheremo più spazio al codice, mostrando una applicazione pratica di iText.

Ti consigliamo anche