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
  • affidabilità
  • estensibilità
  • indipendenza dalla piattaforma
  • standard aperto

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
  • Gestire template personalizzati
  • Operare con le immagini
  • Scrivere tabelle
  • Inserire digital watermark
  • 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 Document
    Paragraph è un insieme di Phrase Chunk
    Section è una parte del Document Paragraph
    Chapter è per iText Section Section
    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
    2. split
    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

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

    Classe Descrizione
    PDFDocument consente di trasformare un qualsiasi Document
    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
    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
    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