[[oktatas:programozás:java:java_pdf|< Java PDF]] ====== Java PDF generálás - itext9 ====== * **Szerző:** Sallai András * Copyright (c) 2024, Sallai András * Szerkesztve: 2024 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== Maven függőségek ===== A magyar ékezetesekhez szükség van a font-asian csomagra is. com.itextpdf kernel 9.0.0 com.itextpdf layout 9.0.0 com.itextpdf io 9.0.0 com.itextpdf font-asian 9.0.0 ===== Moduláris Java projekt esetén ===== A ITextPdf sajnos nem moduláris, így csak automatikus modulbetöltést tudunk beállítani: requires transitive kernel; requires transitive layout; requires transitive io; requires transitive font.asian; Egy JavaFX projektben például az egész module-info.java fájl: module com.example { requires transitive javafx.graphics; requires javafx.controls; requires javafx.fxml; requires transitive kernel; requires transitive layout; requires transitive io; requires transitive font.asian; opens com.example to javafx.fxml; exports com.example; } ===== Példa ékezetes szöveghez ===== package com.example; import java.io.IOException; import com.itextpdf.io.font.FontProgram; import com.itextpdf.io.font.FontProgramFactory; import com.itextpdf.io.font.PdfEncodings; import com.itextpdf.kernel.font.PdfFont; import com.itextpdf.kernel.font.PdfFontFactory; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.layout.Document; import com.itextpdf.layout.element.Paragraph; import com.itextpdf.layout.element.Text; public class Gen { public static void genPdf() { try { PdfWriter pdfWriter = new PdfWriter("data.pdf"); PdfDocument pdfDocument = new PdfDocument(pdfWriter); Document document = new Document(pdfDocument); FontProgram program = FontProgramFactory.createFont(); PdfFont font = PdfFontFactory.createFont(program, PdfEncodings.CP1250); Text text = new Text("árvíztűrő tükörfúrógép").setFont(font); Paragraph paragraph = new Paragraph(text); document.add(paragraph); document.close(); }catch(IOException e) { System.err.println("Hiba! A PDF írása sikeretelen!"); System.err.println(e.getMessage()); } } } ===== Linkek ===== Az automatikus modulokról: * https://openjdk.org/projects/jigsaw/spec/sotms/#automatic-modules (2024) Fonthasználat: * https://kb.itextpdf.com/itext/chapter-1-introducing-fonts (2024)