itextAan de slag met itext


Opmerkingen

Als u naar PDF-creatie kijkt, vindt u twee verschillende benaderingen:

  • Grafische ontwerpers gebruiken bureaubladtoepassingen zoals Adobe Acrobat of Adobe InDesign om een document te maken in een handmatig of semimanueel proces.
  • In een andere context worden PDF-documenten programmatisch gemaakt, met behulp van een API om PDF's rechtstreeks vanuit softwaretoepassingen te produceren, zonder - of met minimale - menselijke tussenkomst. Soms wordt het document eerst in een intermediair formaat gemaakt (bijv. XML, HTML, ...) en vervolgens omgezet naar PDF.

Deze verschillende benaderingen vereisen verschillende softwareproducten.

Hetzelfde geldt voor PDF-manipulatie.

  • U kunt een PDF handmatig bijwerken in tools zoals Adobe Acrobat,
  • Er zijn ook tools waarmee formulieren automatisch kunnen worden ingevuld op basis van informatie uit een database.

iText is een tool die zich richt op de automatiseringskant van dingen.

Wat is iText?

iText is een SDK die is ontwikkeld om ontwikkelaars het volgende te laten doen (en nog veel meer):

  • Genereer documenten en rapporten op basis van gegevens uit een XML-bestand of een database
  • Maak kaarten en boeken en maak gebruik van tal van interactieve functies die beschikbaar zijn in PDF
  • Voeg bladwijzers, paginanummers, watermerken en andere functies toe aan bestaande PDF-documenten
  • Pagina's splitsen of samenvoegen uit bestaande PDF-bestanden
  • Vul interactieve formulieren in
  • PDF-documenten digitaal ondertekenen
  • Serveer dynamisch gegenereerde of gemanipuleerde PDF-documenten in een webbrowser

iText is geen tool voor eindgebruikers. U moet iText in uw eigen applicaties inbouwen, zodat u het PDF-creatie- en manipulatieproces kunt automatiseren.

Wanneer iText gebruiken?

Meestal wordt iText gebruikt in projecten die aan een van de volgende vereisten voldoen:

  • De inhoud is niet van tevoren beschikbaar: deze wordt berekend op basis van gebruikersinvoer of realtime database-informatie.
  • De PDF-bestanden kunnen niet handmatig worden geproduceerd vanwege de enorme hoeveelheid inhoud: een groot aantal pagina's of documenten.
  • Documenten moeten worden gemaakt in de modus zonder toezicht, in een batchproces.
  • De inhoud moet worden aangepast of gepersonaliseerd; de naam van de eindgebruiker moet bijvoorbeeld op een aantal pagina's worden gestempeld.

Vaak zul je deze vereisten tegenkomen in webtoepassingen, waar inhoud dynamisch aan een browser moet worden aangeboden. Normaal gesproken zou u deze informatie in de vorm van HTML weergeven, maar voor sommige documenten heeft PDF de voorkeur boven HTML voor een betere afdrukkwaliteit, voor identieke presentatie op verschillende platforms, om veiligheidsredenen, om te voldoen aan specifieke industriële normen (zoals als PAdES, PDF / A of PDF / UA), of om de bestandsgrootte te verkleinen.

versies

Versie Eerste uitgave Nieuwste uitgave Eind van het leven
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

Hallo Wereld

Dit is een heel eenvoudig programma om een PDF te maken met 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 )

U kunt vanaf die pagina naar veel andere voorbeelden navigeren.


En dit is een heel eenvoudig programma om een PDF te maken met de voorloper 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 )

Er zijn nog veel meer voorbeelden om vanaf deze pagina te navigeren.


Deze twee voorbeelden lijken redelijk op elkaar. De voordelen van de opnieuw ontworpen iText 7 API zullen echter duidelijk worden zodra men naar minder triviale voorbeelden gaat kijken. Navigeer dus eenvoudig door de voorbeeldbroncode uit de bovenstaande links en vergelijk.

Installatie of instellingen

iText voor Java

Het importeren van de iText-potten uit de Central Maven Repository is de beste manier om iText 7 te installeren. Deze eenvoudige video's leggen uit hoe u dit kunt doen met behulp van verschillende IDE's:

In deze tutorials definiëren we alleen de kernel en de layout outprojecten als afhankelijkheden. Maven importeert ook automatisch de io pot omdat de kernel afhankelijk zijn van de io pakketten.

Dit is de basislijst met afhankelijkheden voor standaardgebruik van 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>
 

Elke afhankelijkheid komt overeen met een jar in Java en met een DLL in C #.

  • kernel en io : bevatten functionaliteit op laag niveau.
  • layout : bevat functionaliteit op hoog niveau.
  • forms : nodig voor alle AcroForm-voorbeelden.
  • pdfa : nodig voor PDF / A-specifieke functionaliteit.
  • pdftest : nodig voor de voorbeelden die ook een test zijn.

Voor specifieker gebruik van iText 7 hebt u mogelijk extra potten nodig:

  • barcodes : gebruik dit als u barcodes wilt maken.
  • hyph : gebruik dit als u wilt dat tekst wordt afgebroken.
  • font-asian : gebruik dit als je CJK-functionaliteit nodig hebt (Chinees / Japans / Koreaans)
  • sign : gebruik dit als u ondersteuning nodig hebt voor digitale handtekeningen.

Alle hierboven vermelde potten zijn beschikbaar onder de AGPL-licentie. Je kunt deze potten ook downloaden in een ZIP-bestand gehost op Github: https://github.com/itext/itext7/releases

Als je deze potten wilt gebruiken, moet je ze aan je CLASSPATH toevoegen, net zoals je elke andere pot zou toevoegen.

Extra iText 7-functionaliteit is beschikbaar via add-ons, die worden geleverd als potten onder een commerciële licentie. Als u een van deze add-ons wilt gebruiken, of als u iText 7 met uw eigen code wilt gebruiken, moet u een commerciële licentiesleutel voor iText 7 aanschaffen (zie het juridische gedeelte van de iText-website ).

U kunt een dergelijke licentiesleutel importeren met behulp van de licentiesleutelmodule. Je kunt de licentiesleutelpot als volgt krijgen:

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

Sommige functionaliteit in iText is een gesloten bron. Als u bijvoorbeeld PdfCalligraph wilt gebruiken, hebt u de typography nodig. Deze module werkt niet zonder een officiële licentiesleutel.

iText voor C #

U kunt een ZIP-bestand downloaden met alle DLL's die beschikbaar zijn onder de AGPL. Lees de Java-documentatie voor meer informatie over deze DLL's.