LPDFJava 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! |
||
// 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.
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:
Objektum hozzáadása a fejléchez:
Objektum hozzáadása a törzshöz:
Objektum hozzáadása a lábléchez:
|
A fejléchez és a lábléchez adott objektumok minden oldalon megjelennek.
Példa:
|
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.
- 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.
- 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.