Search in sources :

Example 1 with IEventHandler

use of com.itextpdf.kernel.events.IEventHandler in project i7js-highlevel by itext.

the class C07E04_ImageWatermark method createPdf.

public void createPdf(String dest) throws IOException {
    // Initialize PDF document
    PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
    Image img = new Image(ImageDataFactory.create(IMG));
    IEventHandler handler = new TransparentImage(img);
    pdf.addEventHandler(PdfDocumentEvent.START_PAGE, handler);
    // Initialize document
    Document document = new Document(pdf);
    PdfFont bold = PdfFontFactory.createFont(StandardFonts.HELVETICA_BOLD);
    document.setTextAlignment(TextAlignment.JUSTIFIED).setHyphenation(new HyphenationConfig("en", "uk", 3, 3));
    BufferedReader br = new BufferedReader(new FileReader(SRC));
    String name, line;
    Paragraph p;
    boolean title = true;
    int counter = 0;
    List<SimpleEntry<String, SimpleEntry<String, Integer>>> toc = new ArrayList<>();
    while ((line = br.readLine()) != null) {
        p = new Paragraph(line);
        p.setKeepTogether(true);
        if (title) {
            name = String.format("title%02d", counter++);
            SimpleEntry<String, Integer> titlePage = new SimpleEntry(line, pdf.getNumberOfPages());
            p.setFont(bold).setFontSize(12).setKeepWithNext(true).setDestination(name).setNextRenderer(new UpdatePageRenderer(p, titlePage));
            title = false;
            document.add(p);
            toc.add(new SimpleEntry(name, titlePage));
        } else {
            p.setFirstLineIndent(36);
            if (line.isEmpty()) {
                p.setMarginBottom(12);
                title = true;
            } else {
                p.setMarginBottom(0);
            }
            document.add(p);
        }
    }
    pdf.removeEventHandler(PdfDocumentEvent.START_PAGE, handler);
    document.add(new AreaBreak(AreaBreakType.NEXT_PAGE));
    p = new Paragraph().setFont(bold).add("Table of Contents").setDestination("toc");
    document.add(p);
    toc.remove(0);
    List<TabStop> tabstops = new ArrayList();
    tabstops.add(new TabStop(580, TabAlignment.RIGHT, new DottedLine()));
    for (SimpleEntry<String, SimpleEntry<String, Integer>> entry : toc) {
        SimpleEntry<String, Integer> text = entry.getValue();
        p = new Paragraph().addTabStops(tabstops).add(text.getKey()).add(new Tab()).add(String.valueOf(text.getValue())).setAction(PdfAction.createGoTo(entry.getKey()));
        document.add(p);
    }
    // Close document
    document.close();
}
Also used : ArrayList(java.util.ArrayList) HyphenationConfig(com.itextpdf.layout.hyphenation.HyphenationConfig) TabStop(com.itextpdf.layout.element.TabStop) AreaBreak(com.itextpdf.layout.element.AreaBreak) Image(com.itextpdf.layout.element.Image) Document(com.itextpdf.layout.Document) PdfDocument(com.itextpdf.kernel.pdf.PdfDocument) DottedLine(com.itextpdf.kernel.pdf.canvas.draw.DottedLine) PdfFont(com.itextpdf.kernel.font.PdfFont) FileReader(java.io.FileReader) PdfWriter(com.itextpdf.kernel.pdf.PdfWriter) SimpleEntry(java.util.AbstractMap.SimpleEntry) PdfDocument(com.itextpdf.kernel.pdf.PdfDocument) IEventHandler(com.itextpdf.kernel.events.IEventHandler) Paragraph(com.itextpdf.layout.element.Paragraph) Tab(com.itextpdf.layout.element.Tab) BufferedReader(java.io.BufferedReader)

Example 2 with IEventHandler

use of com.itextpdf.kernel.events.IEventHandler in project i7js-highlevel by itext.

the class C07E13_Compressed method createPdf.

public void createPdf(String dest) throws IOException {
    // Initialize PDF document
    PdfDocument pdf = new PdfDocument(new PdfWriter(dest, new WriterProperties().setFullCompressionMode(true)));
    Image img = new Image(ImageDataFactory.create(IMG));
    IEventHandler handler = new TransparentImage(img);
    pdf.addEventHandler(PdfDocumentEvent.START_PAGE, handler);
    // Initialize document
    Document document = new Document(pdf);
    PdfFont bold = PdfFontFactory.createFont(StandardFonts.HELVETICA_BOLD);
    document.setTextAlignment(TextAlignment.JUSTIFIED).setHyphenation(new HyphenationConfig("en", "uk", 3, 3));
    BufferedReader br = new BufferedReader(new FileReader(SRC));
    String name, line;
    Paragraph p;
    boolean title = true;
    int counter = 0;
    List<SimpleEntry<String, SimpleEntry<String, Integer>>> toc = new ArrayList<>();
    while ((line = br.readLine()) != null) {
        p = new Paragraph(line);
        p.setKeepTogether(true);
        if (title) {
            name = String.format("title%02d", counter++);
            p.setFont(bold).setFontSize(12).setKeepWithNext(true).setDestination(name);
            title = false;
            document.add(p);
            toc.add(new SimpleEntry(name, new SimpleEntry(line, pdf.getNumberOfPages())));
        } else {
            p.setFirstLineIndent(36);
            if (line.isEmpty()) {
                p.setMarginBottom(12);
                title = true;
            } else {
                p.setMarginBottom(0);
            }
            document.add(p);
        }
    }
    pdf.removeEventHandler(PdfDocumentEvent.START_PAGE, handler);
    document.add(new AreaBreak(AreaBreakType.NEXT_PAGE));
    p = new Paragraph().setFont(bold).add("Table of Contents").setDestination("toc");
    document.add(p);
    toc.remove(0);
    List<TabStop> tabstops = new ArrayList();
    tabstops.add(new TabStop(580, TabAlignment.RIGHT, new DottedLine()));
    for (SimpleEntry<String, SimpleEntry<String, Integer>> entry : toc) {
        SimpleEntry<String, Integer> text = entry.getValue();
        p = new Paragraph().addTabStops(tabstops).add(text.getKey()).add(new Tab()).add(String.valueOf(text.getValue())).setAction(PdfAction.createGoTo(entry.getKey()));
        document.add(p);
    }
    // Close document
    document.close();
}
Also used : ArrayList(java.util.ArrayList) HyphenationConfig(com.itextpdf.layout.hyphenation.HyphenationConfig) TabStop(com.itextpdf.layout.element.TabStop) AreaBreak(com.itextpdf.layout.element.AreaBreak) Image(com.itextpdf.layout.element.Image) Document(com.itextpdf.layout.Document) PdfDocument(com.itextpdf.kernel.pdf.PdfDocument) WriterProperties(com.itextpdf.kernel.pdf.WriterProperties) DottedLine(com.itextpdf.kernel.pdf.canvas.draw.DottedLine) PdfFont(com.itextpdf.kernel.font.PdfFont) FileReader(java.io.FileReader) PdfWriter(com.itextpdf.kernel.pdf.PdfWriter) SimpleEntry(java.util.AbstractMap.SimpleEntry) PdfDocument(com.itextpdf.kernel.pdf.PdfDocument) IEventHandler(com.itextpdf.kernel.events.IEventHandler) Paragraph(com.itextpdf.layout.element.Paragraph) Tab(com.itextpdf.layout.element.Tab) BufferedReader(java.io.BufferedReader)

Aggregations

IEventHandler (com.itextpdf.kernel.events.IEventHandler)2 PdfFont (com.itextpdf.kernel.font.PdfFont)2 PdfDocument (com.itextpdf.kernel.pdf.PdfDocument)2 PdfWriter (com.itextpdf.kernel.pdf.PdfWriter)2 DottedLine (com.itextpdf.kernel.pdf.canvas.draw.DottedLine)2 Document (com.itextpdf.layout.Document)2 AreaBreak (com.itextpdf.layout.element.AreaBreak)2 Image (com.itextpdf.layout.element.Image)2 Paragraph (com.itextpdf.layout.element.Paragraph)2 Tab (com.itextpdf.layout.element.Tab)2 TabStop (com.itextpdf.layout.element.TabStop)2 HyphenationConfig (com.itextpdf.layout.hyphenation.HyphenationConfig)2 BufferedReader (java.io.BufferedReader)2 FileReader (java.io.FileReader)2 SimpleEntry (java.util.AbstractMap.SimpleEntry)2 ArrayList (java.util.ArrayList)2 WriterProperties (com.itextpdf.kernel.pdf.WriterProperties)1