oktatas:programozas:java:java_pdf
Különbségek
A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
Előző változat mindkét oldalonElőző változat | |||
oktatas:programozas:java:java_pdf [2024/12/08 09:05] – [Helló Világ ékezetes] admin | oktatas:programozas:java:java_pdf [2024/12/08 12:08] (aktuális) – admin | ||
---|---|---|---|
Sor 3: | Sor 3: | ||
====== Java PDF generálás ====== | ====== Java PDF generálás ====== | ||
- | * **Szerző: | + | * [[oktatas:programozás:java:java_pdf:Itextpdf5]] |
- | * Copyright (c) 2014, Sallai András | + | * [[oktatas:programozás:java:java_pdf:Itextpdf9]] |
- | * Szerkesztve: | + | |
- | * Licenc: | + | |
- | * Web: https:// | + | |
- | + | ||
- | ===== Bevezetés ===== | + | |
- | + | ||
- | Ez a leírás a iTextPdf használatát mutatja be, egy egyszerű példán | + | |
- | keresztül. Cél, hogy az ékezetes " | + | |
- | megjelenjenek. | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | ===== Maven függőség ===== | + | |
- | + | ||
- | <code xml> | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | ===== Szükséges jar fájl ===== | + | |
- | + | ||
- | A PDF generálásához a iTextPdfet használjuk. A kívánt jar fájl letöltéséhez | + | |
- | látogassuk meg a következő weboldalt: | + | |
- | * http:// | + | |
- | + | ||
- | + | ||
- | A itextpdf-x.x.x.jar fájl szükséges. A dokumentum készítésekor: | + | |
- | itextpdf-5.5.4.jar | + | |
- | + | ||
- | + | ||
- | API dokumentáció: | + | |
- | * http:// | + | |
- | + | ||
- | + | ||
- | ===== Használható osztályok ===== | + | |
- | + | ||
- | A com.itextpdf.text csomag: | + | |
- | * PdfReader - dokumentum beolvasása | + | |
- | * PdfWriter - dokumentum elkészítése | + | |
- | A com.itextpdf.text.pdf csomag: | + | |
- | * PdfStamper - dokumentum időbélyeg | + | |
- | ===== Szükséges osztályok ===== | + | |
- | < | + | |
- | import com.itextpdf.text.Chunk; | + | |
- | import com.itextpdf.text.Document; | + | |
- | import com.itextpdf.text.Font; | + | |
- | import com.itextpdf.text.pdf.BaseFont; | + | |
- | import com.itextpdf.text.pdf.PdfWriter; | + | |
- | import java.io.FileOutputStream; | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | ===== Helló Világ ===== | + | |
- | + | ||
- | <code java> | + | |
- | Document document = new Document(); | + | |
- | PdfWriter.getInstance(document, | + | |
- | Rectangle one = new Rectangle(70, | + | |
- | Rectangle two = new Rectangle(700, | + | |
- | document.setPageSize(one); | + | |
- | document.setMargins(2, | + | |
- | document.open(); | + | |
- | Paragraph p = new Paragraph(" | + | |
- | document.add(p); | + | |
- | document.setPageSize(two); | + | |
- | document.setMargins(20, | + | |
- | document.newPage(); | + | |
- | document.add(p); | + | |
- | document.close(); | + | |
- | </ | + | |
- | + | ||
- | ===== Helló Világ ékezetes ===== | + | |
- | + | ||
- | <code java> | + | |
- | Document document = new Document(); | + | |
- | try { | + | |
- | FileOutputStream os = new FileOutputStream(" | + | |
- | PdfWriter.getInstance(document, | + | |
- | document.open(); | + | |
- | + | ||
- | BaseFont baseFont = BaseFont.createFont(BaseFont.HELVETICA, | + | |
- | BaseFont.CP1250, | + | |
- | Font font = new Font(baseFont, | + | |
- | Chunk chunk = new Chunk(" | + | |
- | document.add(chunk); | + | |
- | }catch(Exception ex) { | + | |
- | // | + | |
- | } | + | |
- | document.close(); | + | |
- | </ | + | |
- | + | ||
- | A " | + | |
- | + | ||
- | A következő példában bekezdést teszünk a PDF fájlba. | + | |
- | + | ||
- | <code java Main.java> | + | |
- | package lan.zold; | + | |
- | + | ||
- | import java.io.FileOutputStream; | + | |
- | + | ||
- | import com.itextpdf.text.Document; | + | |
- | import com.itextpdf.text.Font; | + | |
- | import com.itextpdf.text.Paragraph; | + | |
- | import com.itextpdf.text.pdf.BaseFont; | + | |
- | import com.itextpdf.text.pdf.PdfWriter; | + | |
- | + | ||
- | public class Main { | + | |
- | public static void main(String[] args) { | + | |
- | + | ||
- | try { | + | |
- | Document document = new Document(); | + | |
- | FileOutputStream fos = new FileOutputStream(" | + | |
- | PdfWriter.getInstance(document, | + | |
- | document.open(); | + | |
- | + | ||
- | BaseFont baseFont = BaseFont.createFont( | + | |
- | BaseFont.HELVETICA, | + | |
- | ); | + | |
- | Font font = new Font(baseFont); | + | |
- | document.add(new Paragraph(" | + | |
- | document.addAuthor(" | + | |
- | document.close(); | + | |
- | }catch(Exception e) { | + | |
- | e.printStackTrace(); | + | |
- | } | + | |
- | } | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | ===== Vízjel, filter és fájlválasztó ===== | + | |
- | A vízjeles példa az ékezetes hosszú " | + | |
- | + | ||
- | <code java Watermark.java> | + | |
- | + | ||
- | package model; | + | |
- | + | ||
- | import com.itextpdf.text.BaseColor; | + | |
- | import com.itextpdf.text.Document; | + | |
- | import com.itextpdf.text.DocumentException; | + | |
- | import com.itextpdf.text.Element; | + | |
- | import com.itextpdf.text.Font; | + | |
- | import com.itextpdf.text.Font.FontFamily; | + | |
- | import com.itextpdf.text.Phrase; | + | |
- | import com.itextpdf.text.pdf.BaseFont; | + | |
- | import com.itextpdf.text.pdf.ColumnText; | + | |
- | import com.itextpdf.text.pdf.PdfContentByte; | + | |
- | import com.itextpdf.text.pdf.PdfPageEventHelper; | + | |
- | import com.itextpdf.text.pdf.PdfWriter; | + | |
- | import java.io.IOException; | + | |
- | + | ||
- | + | ||
- | public class Watermark extends PdfPageEventHelper { | + | |
- | Font font = null; | + | |
- | Phrase watermark = null; | + | |
- | public Watermark() { | + | |
- | font = new Font(createBaseFont(), | + | |
- | watermark = new Phrase(" | + | |
- | } | + | |
- | + | ||
- | private BaseFont createBaseFont() { | + | |
- | BaseFont baseFont = null; | + | |
- | try { | + | |
- | baseFont = tryCreateBaseFont(); | + | |
- | }catch(DocumentException ex) { | + | |
- | System.err.println(" | + | |
- | }catch(IOException ex) { | + | |
- | System.err.println(" | + | |
- | } | + | |
- | return baseFont; | + | |
- | } | + | |
- | private BaseFont tryCreateBaseFont() throws DocumentException, | + | |
- | IOException { | + | |
- | BaseFont baseFont = BaseFont.createFont(BaseFont.HELVETICA, | + | |
- | BaseFont.CP1250, | + | |
- | return baseFont; | + | |
- | } | + | |
- | + | ||
- | @Override | + | |
- | public void onEndPage(PdfWriter writer, Document document) { | + | |
- | PdfContentByte canvas = writer.getDirectContentUnder(); | + | |
- | ColumnText.showTextAligned(canvas, | + | |
- | } | + | |
- | + | ||
- | } | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | <code java Controller.java> | + | |
- | + | ||
- | package controller; | + | |
- | + | ||
- | import com.itextpdf.text.Chunk; | + | |
- | import com.itextpdf.text.Document; | + | |
- | import com.itextpdf.text.DocumentException; | + | |
- | import com.itextpdf.text.Font; | + | |
- | import com.itextpdf.text.pdf.BaseFont; | + | |
- | import com.itextpdf.text.pdf.PdfWriter; | + | |
- | import java.io.FileNotFoundException; | + | |
- | import java.io.FileOutputStream; | + | |
- | import java.io.IOException; | + | |
- | import java.io.File; | + | |
- | import javax.swing.JFileChooser; | + | |
- | import model.PdfFilter; | + | |
- | import model.Watermark; | + | |
- | + | ||
- | public class Controller.java { | + | |
- | + | ||
- | + | ||
- | public void genPdfButtonActionPerformed(java.awt.event.ActionEvent evt) { | + | |
- | + | ||
- | String filePath = fileChoose(); | + | |
- | if(filePath != "" | + | |
- | genPdf(filePath); | + | |
- | } | + | |
- | } | + | |
- | private void genPdf(String filePath) { | + | |
- | try { | + | |
- | tryGenPdf(filePath); | + | |
- | }catch(FileNotFoundException ex) { | + | |
- | System.err.println(" | + | |
- | }catch(DocumentException ex){ | + | |
- | System.err.println(" | + | |
- | }catch(IOException ex){ | + | |
- | System.err.println(" | + | |
- | } | + | |
- | + | ||
- | } | + | |
- | + | ||
- | private void tryGenPdf(String filePath) throws FileNotFoundException, | + | |
- | IOException { | + | |
- | Document document = new Document(); | + | |
- | + | ||
- | FileOutputStream os = new FileOutputStream(filePath); | + | |
- | PdfWriter pdfWriter = PdfWriter.getInstance(document, | + | |
- | pdfWriter.setPageEvent(new Watermark()); | + | |
- | document.open(); | + | |
- | + | ||
- | BaseFont baseFont = BaseFont.createFont(BaseFont.HELVETICA, | + | |
- | BaseFont.CP1250, | + | |
- | Font font = new Font(baseFont, | + | |
- | Chunk chunk = new Chunk(" | + | |
- | document.add(chunk); | + | |
- | + | ||
- | document.close(); | + | |
- | + | ||
- | } | + | |
- | + | ||
- | private String fileChoose() { | + | |
- | JFileChooser fileChooser = new JFileChooser(); | + | |
- | String filePath = ""; | + | |
- | //Itt adjuk hozzá a filtert (2 sor): | + | |
- | fileChooser.setAcceptAllFileFilterUsed(false); | + | |
- | fileChooser.addChoosableFileFilter(new PdfFilter()); | + | |
- | + | ||
- | if( fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION | + | |
- | filePath = fileChooser.getSelectedFile().getPath(); | + | |
- | } | + | |
- | return filePath; | + | |
- | } | + | |
- | } | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | + | ||
- | <code java PdfFilter.java> | + | |
- | public class PdfFilter extends FileFilter { | + | |
- | + | ||
- | private final String[] okFileExtensions = | + | |
- | new String[] {" | + | |
- | + | ||
- | public boolean accept(File file) { | + | |
- | for (String extension : okFileExtensions) | + | |
- | { | + | |
- | if (file.getName().toLowerCase().endsWith(extension)) | + | |
- | { | + | |
- | return true; | + | |
- | } | + | |
- | } | + | |
- | return false; | + | |
- | } | + | |
- | public String getDescription() | + | |
- | { | + | |
- | return "PDF fájl"; | + | |
- | } | + | |
- | } | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | ===== Linkek ===== | + | |
- | + | ||
- | ==== PDF generátorok ==== | + | |
- | + | ||
- | * [[http:// | + | |
- | * [[http:// | + | |
- | * [[http:// | + | |
- | * [[http:// | + | |
- | * [[https://java.net/ | + | |
- | * [[http:// | + | |
- | * [[http:// | + | |
- | * [[https:// | + | |
- | + | ||
oktatas/programozas/java/java_pdf.1733645157.txt.gz · Utolsó módosítás: 2024/12/08 09:05 szerkesztette: admin