PDF fájlok létrehozása Java-ban

Bevezetés

Ez a gyors cikk a PDF dokumentum létrehozására összpontosít a semmiből a népszerű iText és PdfBox könyvtár alapján.

Maven függőségek

Vessünk egy pillantást a Maven függőségekre, amelyeket a projektünknek tartalmaznia kell:

A könyvtárak legújabb verzióját itt találjuk: iText és PdfBox.

Egy további függőséget szükséges hozzáadni, amennyiben a fájlunkat titkosítani kell. A Bounty Castle Provider csomag kriptográfiai algoritmusok implementációit tartalmazza, és mindkét könyvtárnak szüksége van rá:

<dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.56</version></dependency>

A könyvtár legújabb verziója itt található: The Bounty Castle Provider.

Overview

Az iText és a PdfBox is java könyvtárak, amelyeket pdf fájlok létrehozására/manipulálására használnak. Bár a könyvtárak végső kimenete ugyanaz, mégis kicsit másképp működnek. Vessünk rájuk egy pillantást.

Pdf létrehozása az ITextben

4.1. Szöveg beillesztése a Pdf-be

Nézzük meg, hogyan illesztünk be egy új fájlt “Hello World” szöveggel a pdf fájlba

A pdf létrehozása az iText könyvtár használatával az Elements interfészt megvalósító objektumok manipulálásán alapul a Document-ben (az 5.5.10-es verzióban 45 ilyen megvalósítás van).

A dokumentumhoz hozzáadható és használható legkisebb elem a Chunk, amely alapvetően egy karakterlánc alkalmazott betűtípussal.

A Chunkok emellett más elemekkel, például Paragraphs, Section stb. is kombinálhatók, ami szép megjelenésű dokumentumokat eredményez.

4.2. A dokumentumban a Chunk-elemek és a Section-elemek kombinációja. Kép beszúrása

Az iText könyvtár egyszerű módot biztosít arra, hogy képet adjunk a dokumentumhoz. Egyszerűen csak létre kell hoznunk egy képpéldányt, és hozzá kell adnunk a dokumentumhoz.

4.3. Táblázat beillesztése

Problémával szembesülhetünk, amikor táblázatot szeretnénk hozzáadni a pdf-ünkhöz. Szerencsére az iText out-of-the-box ilyen funkciót biztosít.

Először is azt kell tennünk, hogy létrehozunk egy PdfTable objektumot, és a konstruktorban megadjuk a táblázatunk oszlopainak számát. Most már egyszerűen hozzáadhatunk új cellát a

Most már egyszerűen hozzáadhatunk új cellát az újonnan létrehozott táblázat objektum addCell metódusának meghívásával. iText létrehozza a táblázat sorait, amíg az összes szükséges cella meg van határozva, ami azt jelenti, hogy ha egyszer létrehozunk egy táblázatot 3 oszloppal és hozzáadunk 8 cellát, csak 2 sor fog megjelenni, mindegyikben 3 cellával.

Nézzük meg a példát:

Elkészítünk egy új táblázatot 3 oszloppal és 3 sorral. Az első sort táblázatfejlécként fogjuk kezelni, megváltozott háttérszínnel és szegélyszélességgel:

A második sor három cellából fog állni, csak szöveggel, extra formázás nélkül.

private void addRows(PdfPTable table) { table.addCell("row 1, col 1"); table.addCell("row 1, col 2"); table.addCell("row 1, col 3");}

A cellákba nemcsak szöveget, hanem képeket is felvehetünk. Ezenkívül minden egyes cellát külön-külön is formázhatunk, az alábbiakban bemutatott példában vízszintes és függőleges igazítást alkalmazunk:

4.4. Fájl titkosítás

Az iText könyvtár segítségével történő engedélyezés alkalmazásához már létrehozott pdf dokumentumra van szükségünk. Példánkban a korábban létrehozott iTextHelloWorld.pdf fájlunkat fogjuk használni.

Mihelyt betöltjük a fájlt a PdfReader segítségével, létre kell hoznunk egy PdfStamper-t, amelyet arra használunk, hogy további tartalmakat alkalmazzunk a fájlra, például metaadatokat, titkosítást stb:

Példánkban két jelszóval titkosítottuk a fájlt. A felhasználói jelszót (“userpass”), ahol a felhasználónak csak olvasási joga van, nyomtatási lehetőség nélkül, és a tulajdonosi jelszót (“ownerpass”), amelyet mesterkulcsként használunk, amely lehetővé teszi egy személy számára a teljes hozzáférést a pdf-hez.

Ha engedélyezni akarjuk a felhasználónak a pdf kinyomtatását, akkor a 0 helyett (a setEncryption harmadik paramétere) átadhatjuk:

PdfWriter.ALLOW_PRINTING

Természetesen különböző jogosultságokat is keverhetünk, például:

PdfWriter.ALLOW_PRINTING | PdfWriter.ALLOW_COPY

Ne feledjük, hogy az iText használatával a hozzáférési jogosultságok beállításához egy ideiglenes pdf-et is létrehozunk, amelyet törölni kell, és ha nem, akkor bárki számára teljesen hozzáférhetővé válik.

Pdf létrehozása a PdfBoxban

5.1. Pdf létrehozása a PdfBoxban

. Szöveg beillesztése a Pdf-be

A PdfBox könyvtár az iText-tel ellentétben olyan API-t biztosít, amely a folyammanipuláción alapul. Nincsenek olyan osztályok, mint a Chunk/Paragraph stb. A PDDocument osztály egy memórián belüli Pdf-reprezentáció, ahol a felhasználó a PDPageContentStream osztály manipulálásával írja az adatokat.

Vessünk egy pillantást a kódpéldára:

5.2. Kép beillesztése

A képek beillesztése egyszerű.

Először be kell töltenünk egy fájlt és létrehozni egy PDImageXObjectet, majd ezt követően kirajzolni a dokumentumra (pontos x,y koordinátákat kell megadni).

Ez minden:

5.3. Képek beillesztése. Táblázat beszúrása

A PdfBox sajnos nem biztosít olyan out-of-box módszereket, amelyek lehetővé tennék a táblázatok létrehozását. Amit ilyen helyzetben tehetünk, az az, hogy kézzel rajzoljuk meg – szó szerint minden egyes sort megrajzolunk, amíg a rajzunk nem hasonlít az általunk megálmodott táblázatra.

5.4. A táblázat megrajzolása. Fájl titkosítás

A PdfBox könyvtár lehetőséget biztosít a titkosításra, és a fájlengedélyek beállítására a felhasználó számára. Az iTexthez képest nem igényel már létező fájlt, mivel egyszerűen a PDDocumentet használjuk. A Pdf-fájlok jogosultságait az AccessPermission osztály kezeli, ahol beállíthatjuk, hogy a felhasználó módosíthatja-e, kiveheti-e a tartalmat vagy kinyomtathatja-e a fájlt.

A továbbiakban létrehozunk egy StandardProtectionPolicy objektumot, amely jelszó alapú védelmet ad a dokumentumhoz. Kétféle jelszótípust adhatunk meg. A felhasználói jelszót, amely után a személy képes lesz megnyitni a fájlt az alkalmazott hozzáférési jogosultságokkal és a tulajdonosi jelszót (nincs korlátozás a fájlra):

Példánkban olyan helyzetet mutatunk be, hogy ha egy felhasználó felhasználói jelszót ad meg, a fájl nem módosítható és nem nyomtatható ki.

Következtetések

Ezzel a bemutatóval a pdf fájl létrehozásának módjait tárgyaltuk két népszerű Java könyvtárban.

A teljes példák megtalálhatók a Maven alapú projektben a GitHubon.

Kezdje meg a Spring 5 és a Spring Boot 2 használatát a Tanulj Spring tanfolyamon keresztül:

>> KATTINTSON A TANFOLYAMRA

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.