itextIniziare con itext


Osservazioni

Se guardi alla creazione di PDF, troverai due diversi approcci:

  • I progettisti grafici utilizzano applicazioni desktop come Adobe Acrobat o Adobe InDesign per creare un documento in un processo manuale o semimano.
  • In un altro contesto, i documenti PDF vengono creati a livello di codice, utilizzando un'API per produrre file PDF direttamente da applicazioni software, senza l'uso di un intervento umano minimo. A volte il documento viene creato prima in un formato intermedio (ad es. XML, HTML, ...) e quindi convertito in PDF.

Questi diversi approcci richiedono diversi prodotti software.

Lo stesso vale per la manipolazione di PDF.

  • È possibile aggiornare manualmente un PDF in strumenti come Adobe Acrobat,
  • Esistono anche strumenti che consentono di compilare automaticamente i moduli in base alle informazioni di un database.

iText è uno strumento che si concentra sul lato automazione delle cose.

Che cos'è iText?

iText è un SDK sviluppato per consentire agli sviluppatori di eseguire quanto segue (e molto altro):

  • Genera documenti e report basati su dati da un file XML o da un database
  • Crea mappe e libri, sfruttando numerose funzionalità interattive disponibili in PDF
  • Aggiungi segnalibri, numeri di pagina, filigrane e altre funzionalità ai documenti PDF esistenti
  • Dividere o concatenare pagine da file PDF esistenti
  • Compila i moduli interattivi
  • Firma digitale di documenti PDF
  • Offri documenti PDF generati o manipolati dinamicamente a un browser web

iText non è uno strumento per l'utente finale. È necessario creare iText nelle proprie applicazioni in modo da poter automatizzare il processo di creazione e manipolazione dei PDF.

Quando usare iText?

In genere, iText viene utilizzato in progetti con uno dei seguenti requisiti:

  • Il contenuto non è disponibile in anticipo: viene calcolato in base all'input dell'utente o alle informazioni del database in tempo reale.
  • I file PDF non possono essere prodotti manualmente a causa dell'enorme volume di contenuti: un gran numero di pagine o documenti.
  • I documenti devono essere creati in modalità automatica, in un processo batch.
  • Il contenuto deve essere personalizzato o personalizzato; ad esempio, il nome dell'utente finale deve essere stampato su un numero di pagine.

Spesso si incontrano questi requisiti nelle applicazioni Web, in cui i contenuti devono essere offerti dinamicamente a un browser. Normalmente, dovresti pubblicare queste informazioni sotto forma di HTML, ma per alcuni documenti, il PDF è preferito su HTML per una migliore qualità di stampa, per una presentazione identica su una varietà di piattaforme, per ragioni di sicurezza, per conformarsi a specifici standard di settore (come come PAdES, PDF / A o PDF / UA), o per ridurre le dimensioni del file.

Versioni

Versione Prima uscita Ultima uscita Fine della vita
0,30 - 0,99 2000/02/14 2003-05-01 2005-12-31
1,00 - 1,4,8 2003/06/25 2006-12-19 2009-12-31
2,00 - 2,1,7 2003/02/15 2009-07-07 2012-12-31
5.0.0 - 5.5.11 2009-12-07 2017/03/20 2018/12/31
7.0.0 - ... 2016/05/03 ... 2025/12/31

Ciao mondo

Questo è un programma molto semplice per creare un PDF usando iText 7 / Java:

//Initialize writer
PdfWriter writer = new PdfWriter(dest);

//Initialize document
PdfDocument pdfDoc = new PdfDocument(writer);
Document doc = new Document(pdfDoc);

//Add paragraph to the document
doc.add(new Paragraph("Hello World!"));

//Close document
doc.close();
 

( Listing_01_01_HelloWorld.java )

Puoi passare a molti altri esempi da quella pagina.


E questo è un programma molto semplice per creare un PDF usando il precursore iText 5.5.x / Java:

// step 1
Document document = new Document();
// step 2
PdfWriter.getInstance(document, new FileOutputStream(filename));
// step 3
document.open();
// step 4
document.add(new Paragraph("Hello World!"));
// step 5
document.close();
 

( HelloWorld.java )

Ci sono molti altri esempi per navigare da questa pagina.


Questi due esempi sembrano abbastanza simili. I vantaggi dell'ippestata API iText 7 diventeranno evidenti, non appena si inizia a guardare più da vicino a esempi meno banali. Pertanto, è sufficiente navigare attraverso il codice sorgente di esempio dai link sopra e confrontare.

Installazione o configurazione

iText per Java

Importare i vasi iText dal repository Maven centrale è il modo migliore per installare iText 7. Questi semplici video spiegano come farlo utilizzando IDE diversi:

In queste esercitazioni definiamo solo il kernel e i progetti di layout come dipendenze. Maven importa automaticamente anche io jar perché i pacchetti del kernel dipendono dai pacchetti io .

Questa è la lista di base delle dipendenze per l'uso standard di iText 7:

<dependencies>
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>kernel</artifactId>
        <version>7.0.0</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>io</artifactId>
        <version>7.0.0</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>layout</artifactId>
        <version>7.0.0</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>forms</artifactId>
        <version>7.0.0</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>pdfa</artifactId>
        <version>7.0.0</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>pdftest</artifactId>
        <version>7.0.0</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.18</version>
    </dependency>
</dependencies>
 

Ogni dipendenza corrisponde con un jar in Java e con una DLL in C #.

  • kernel e io : contengono funzionalità di basso livello.
  • layout : contiene funzionalità di alto livello.
  • forms : necessarie per tutti gli esempi di AcroForm.
  • pdfa : necessario per funzionalità specifiche PDF / A.
  • pdftest : necessario per gli esempi che sono anche un test.

Per un uso più specifico di iText 7, potresti aver bisogno di ulteriori giare:

  • barcodes : utilizzare questo se si desidera creare codici a barre.
  • hyph : usa questo se vuoi che il testo sia sillabato.
  • font-asian : usa questa è la funzionalità CJK necessaria (cinese / giapponese / coreano)
  • sign : utilizzare questo se è necessario il supporto per le firme digitali.

Tutti i barattoli sopra elencati sono disponibili con la licenza AGPL. Puoi anche scaricare questi jar in un file ZIP ospitato su Github: https://github.com/itext/itext7/releases

Se vuoi usare questi barattoli, devi aggiungerli al tuo CLASSPATH, proprio come faresti con qualsiasi altro jar.

Ulteriori funzionalità di iText 7 sono disponibili tramite componenti aggiuntivi, forniti sotto forma di contenitori sotto licenza commerciale. Se si desidera utilizzare uno di questi componenti aggiuntivi o se si desidera utilizzare iText 7 con il proprio codice proprietario, è necessario ottenere una chiave di licenza commerciale per iText 7 (vedere la sezione legale del sito Web iText ).

È possibile importare tale chiave di licenza utilizzando il modulo chiave di licenza. Puoi ottenere il codice della chiave di licenza in questo modo:

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext-licensekey</artifactId>
    <version>2.0.0</version>
    <scope>compile</scope>
</dependency>
 

Alcune funzionalità di iText sono closed source. Ad esempio, se si desidera utilizzare PdfCalligraph , è necessario il modulo typography . Questo modulo non funzionerà senza una chiave di licenza ufficiale.

iText per C #

È possibile scaricare un file ZIP contenente tutte le DLL disponibili sotto AGPL. Per maggiori informazioni su queste DLL, leggere la documentazione di Java.