LPDF

Java csomag rugalmas, átméretezhető dokumentumok definiálására, megjelenítésére és mentésére különböző formátumokban

✔ Teljesen ingyenes

 

Igyenes Java csomag PDF dokumentumok készítéséhez. A csomag olyan Java osztályokat atrtalmaz, amelyek szöveges dokumentumok definiálására, megjelenítésére, nyomtatására és PDF formátumban történő mentésére alkalmasak.

LPDF csomag használatával készült nyomtatványok

Számla Munkalap Árajánlat Lista

Beépítés Java projektbe

Az LPDF a JPDF csomagra épül, ezért fontos, hogy a JPDF.jar állományt is hozzáadja a Java projekthez! LPDF.jar + JPDF.jar

Futtatás

A csomag legfontosabb funkcióinak kipróbálásához futtassa az LPDF.jar állományt:

java -jar LPDF.jar

 

A képek nagy méretű változatainak megtekintéséhez kattintson a képrekre!

Egyszerű példa

A példa egy egyoldalas PDF dokumentumot hoz létre, kinyomtatja és egy ablakban megjeleníti azt. Másolja ki a Java programkódot, illesze be egy osztály main() metódusába, és futtassa a programot!

Osztály letöltése

NetBeans projekt letöltése

// LPDF dokumentum létrehozása
final LPage page = new LPage();
page.setBorder(new LineBorder(2));

LText text = LText.newText("HELLO WORLD!", new Font("helvetica", Font.BOLD, 20), LConstants.CENTER);
text.setMargin(new Insets(10, 10, 10, 10));
text.setBorder(new LineBorder(1));
text.addBorderOutside(BorderFactory.createEmptyBorder(20, 20, 20, 20));

page.add(text);

// Oldal mentése PDF-ként.
final PageFormat pageFormat = new PageFormat();
try (FileOutputStream fo = new FileOutputStream("Hello World.pdf")) {
    PDFJob job = new PDFJob(fo);
    Graphics pdfGraphics = job.getGraphics();
    int pageCount = page.getPageCount(pdfGraphics, pageFormat);
    for (int i = 0; i < pageCount; i++) {
        page.constructPage(pdfGraphics, pageFormat, i);
        pdfGraphics.dispose();
    }
    job.end();
} catch (Exception e) {
    // Kivétel kezelése.
}

// Oldal megjelenítése
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout());
frame.setTitle("Hello world!");
JPanel panel = new JPanel(){

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D)g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
        RenderingHints.VALUE_ANTIALIAS_ON);
        page.constructPage(g, pageFormat, 0);
    }
    
};
panel.setBackground(Color.white);
Dimension panelSize = new Dimension((int) pageFormat.getWidth(), (int) pageFormat.getHeight());
panel.setMinimumSize(panelSize);
panel.setPreferredSize(panelSize);
JScrollPane scrollPane = new JScrollPane();
scrollPane.getViewport().setBackground(Color.gray);
scrollPane.getViewport().add(panel);
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
frame.setMinimumSize(new Dimension(640,400));
frame.setLocationRelativeTo(null);
frame.setVisible(true);

// Oldal nyomtatása.
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setPrintable(page, pageFormat);
if (printJob.printDialog()) {
    try {
        printJob.print();
    } catch (PrinterException pe) {
        // Kivétel kezelése.
    }
}

Komplex példa

A bonyolultabb példa fennt látható két mintaoldalt generáló kód, amely az LPDF csomag majdnem minden funkciójának használatát bemutatja. A gyakorlati életben ezeknek a lehetőségeknek valószínüleg csak egy kis részére lesz szüksége.

Komplex példaosztály letöltése

NetBeans projekt letöltése

Struktúra

Az LInterface interfész biztosítja, hogy a különböző típusú objektumok nagyon sokféle módon egymásba ágyazhatók. A használat során azonban érdemes figyelembe venni az egyes kulcsfontosságú osztályok alapvető céljait:

  • LPage: a dokumentumot magába foglaló osztály, a lap méretétől és a tartalomtól függően egy vagy több oldalra osztva jeleníti meg a tartalmat, az LBlock leszármazottja, így rendelkezik az LBlock összes tulajdonságával.
  • LBlock: feladata az oldal vagy blokk függőleges felosztésa a hozzáadott elemek közvetlenül egymás alatt jelennek meg. Ha nem fér ki egy oldalon, automatikusan tördeli a tartalmát, de le is tiltható, vagy ki is kényszeríthető az oldaltörés. Három részből épül fel: fejléc, tartalmi rész és lábléc. Ha a blokk több oldalra kiterjed, a fejléc és a lábléc minden oldalon szerepel. Leszármazott osztályai az LPage, LTable és az LTextBlock.
  • LLine: A területek vízszintes felosztását valósítja meg, a hozzáadott elemek vízszintesen egymás mellett jelennek meg a beállított szabály szerint. Az elemeit különféle módon lehet rendezni (pl. jobbra zárt, balra zárt, sorkizárt módon).
  • LBox: keretbe foglal egy objektumot, üres téglalapot jelenít meg vagy üres helyet biztosít.
  • LText: szöveget jelenít meg.

Tipikus struktúra

Bonyolultabb struktúra

UML diagramm

LPage osztály

Az LPage osztály a dokumentum alapja, amely nyomtatható, mert megvalósítja a Printable interfészt, a PDFJob osztály segítségével pedig PDF fájlba menthető (Lásd: egyszerű példa).

Egy új dokumentum készítéséhez először létre kell hozni egy LPage objektumot, amely a dokumentum tartalmát hordozni fogja. Az LPage objektumhoz közvetlenül hozzáadott elemek egymás alá kerülnek az oldalon.

Példa:

// Dokumenetum létrehozása
LPage page = new LPage();
page.setBorder(new LLineBorder(2)); // Dokumentum szegélyének beállítása

// Szöveges objektum létrehozása "TEXT 1" szöveggel, 20-as betűmérettel, vastagon szedve
LText text = LText.newText("TEXT 1", new Font("helvetica", Font.BOLD, 20),
LConstants.CENTER, new LSizing(100, LConstants.PERCENT_SIZE));
text.setMargin(new Insets(10, 10, 10, 10)); // A szövegmargó beállítása
text.setBorder(new LLineBorder(1)); // Keret hozzáadása a szöveghez
text.addBorderOutside(BorderFactory.createEmptyBorder(10, 10, 10, 10)); // Külső átlátszó keret hozzáadása a szöveghez

// Az első szöveges objektum hozzáadása a dokumentum törzséhez
page.add(text);
        
// Szöveges objektum létrehozása "TEXT 2" szöveggel, 20-as betűmérettel, vastagon szedve
text = LText.newText("TEXT 2", new Font("helvetica", Font.BOLD, 20),
LConstants.CENTER, new LSizing(100, LConstants.PERCENT_SIZE));
text.setMargin(new Insets(10, 10, 10, 10));
text.setBorder(new LLineBorder(1));
text.addBorderOutside(BorderFactory.createEmptyBorder(10, 10, 10, 10));

// A második szöveges objektum hozzáadása a dokumentum törzséhez
page.add(text);

 

Eredmény:

Látható, hogy az LPage objektumhoz adott LText objektumok egymás alá kerültek.

 

Az LPage objektum három fő részből áll:

  • Header - Fejléc
  • Body - Törzs
  • Footer - Lábléc

Objektum hozzáadása a fejléchez:

 

page.addHeader(object);

 

Objektum hozzáadása a törzshöz:

 

page.add(object);

 

Objektum hozzáadása a lábléchez:

 

page.addFooter(object);

 

A fejléchez és a lábléchez adott objektumok minden oldalon megjelennek.

Példa:

 

        // Dokumenetum létrehozása
        LPage page = new LPage();

        // Alsó szegély hozzáadása a fejléchez
        page.setHeaderBorder(new LLineBorder(0,0,2,0));

        // Keret hozzáadása az oldalhoz
        page.setBorder(new LLineBorder(2));

        // Felső szegély hozzáadása a lábléchez
        page.setFooterBorder(new LLineBorder(2,0,0,0));

        // Fejléc szöveg létrehozása
        LText text = LText.newText("Text object added to the header",
                new Font("helvetica", Font.BOLD, 20), LConstants.CENTER,
                new LSizing(100, LConstants.PERCENT_SIZE));

        // Fejléc szöveg hozzáadása
        page.addHeader(text);
        
        // Első törzsszöveg létrehozása
        text = LText.newText("Text object 1 added to the body",
                new Font("helvetica", Font.BOLD, 20), LConstants.CENTER,
                new LSizing(100, LConstants.PERCENT_SIZE));

        // Első törzsszöveg hozzáadása
        page.add(text);
        
        // Második törzsszöveg létrehozása
        text = LText.newText("Text object 2 added to the body",
                new Font("helvetica", Font.BOLD, 20), LConstants.CENTER,
                new LSizing(100, LConstants.PERCENT_SIZE));

        // Második törzsszöveg hozzáadása
        page.add(text);
        
        // Lábléc szöveg létrehozása
        text = LText.newText("Text object added to the footer",
                new Font("helvetica", Font.BOLD, 20), LConstants.CENTER,
                new LSizing(100, LConstants.PERCENT_SIZE));

        // Lábléc szöveg hozzáadása
        page.addFooter(text);

Eredmény:

 

 

LText osztály

Az LPDF csak a támogatott betűtípussokat képes megjeleníteni!

Támogatott betűtípusok:

  • Helvetica
  • Courier
  • Times-Roman

LTable osztály

Táblázat formázása

Az LTable formázási beállításainak struktúrális felépítése és öröklési rendszere lehetővé teszi, hogy rugalmasan módosítsuk a táblázat egyes területeinek formátumát. A következő kép szemlélteti az öröklődést. A képen bármely egység beállításainak módosítása felülírja a tőle balra elhelyezkedő egység beállításait de csak az általa meghatározott táblázatterületen. Például egy adott oszlop beállításainak módosítása felülírja a fejléc beállításait az adott oszlopban, de a többi oszlopban maradnak a fejléc beálíltásai.

  1. Példa: ha a táblázatbeállításokban félkövér betűtípust állítunk be, de más beállítást nem módosítunk, az egész táblázat összes szövege félkövéren lesz szedve.
  2. Példa: ha a fejlécbeállításokban félkövér betűtípust állítunk be, majd az első oszlop beállításaiban normál betűtípust, akkor a fejléc az első oszlopot kivéve félkövéren lesz szedve, a táblázat többi cellájában nem változik a betűtípus.

 

Minden licenc vásárlásával a természetet támogatja

Profitunk jelentős részét természetvédelemre, legősibb értékeink megőrzésére fordítjuk.

 

Természetvédelmi rezervátumunk a

VÖLGYERDŐ TERMÉSZETVÉDELMI PARK

Honlap: völgyerdő.hu

 

-->