iText – Bitkorn Blog https://blog.bitkorn.de Developer Zeugz Sun, 30 Jul 2023 18:29:41 +0000 de-DE hourly 1 https://wordpress.org/?v=6.3.1 iText font with effect https://blog.bitkorn.de/itext-font-with-effect/ Mon, 12 Dec 2016 09:54:34 +0000 http://blog.t-brieskorn.de/?p=224 TestDoc.java

package test;
nimport 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.PageSize;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class TestDoc {

    private static final org.apache.log4j.Logger LOG4J = org.apache.log4j.Logger.getRootLogger();

    public void createPdf() {
        Document document = new Document(PageSize.A4);
        try {
            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("/tmp/test.pdf"));
            writer.setPageEvent(new TestHeader());
            document.open();
            PdfContentByte canvas = writer.getDirectContent();
            ColumnText testColumn = new ColumnText(canvas);
            Phrase testPhrase = new Phrase();
            testPhrase.setFont(new Font(Font.FontFamily.HELVETICA, 18, Font.NORMAL, BaseColor.DARK_GRAY));
            testPhrase.add("testTextDoc"); // only after setFont(), setFont() has effect!!!
            testColumn.setSimpleColumn(testPhrase,
                    100, PageSize.A4.getHeight() - 200,
                    200, PageSize.A4.getHeight() - 160,
                    18, Element.ALIGN_LEFT);
            testColumn.go();

            document.close();
        } catch (DocumentException | FileNotFoundException ex) {
            LOG4J.error(ex.getMessage());
        }
    }
}

 

 

TestHeader.java

 

package test;

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.PageSize;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPageEventHelper;
import com.itextpdf.text.pdf.PdfWriter;

public class TestHeader extends PdfPageEventHelper {

    private static final org.apache.log4j.Logger LOG4J = org.apache.log4j.Logger.getRootLogger();

    @Override
    public void onStartPage(PdfWriter writer, Document document) {
        PdfContentByte canvas = writer.getDirectContent();
        ColumnText testColumn = new ColumnText(canvas);
        Phrase testPhrase = new Phrase();
        testPhrase.setFont(new Font(Font.FontFamily.HELVETICA, 6, Font.NORMAL, BaseColor.DARK_GRAY));
        testPhrase.add("testTextHeader"); // only after setFont(), setFont() has effect!!!
        testColumn.setSimpleColumn(testPhrase,
                100, PageSize.A4.getHeight() - 100,
                200, PageSize.A4.getHeight() - 60,
                6, Element.ALIGN_LEFT);

        try {
            testColumn.go();
        } catch (DocumentException ex) {
            LOG4J.error(ex.getMessage());
        }
    }
}

 

 

Es funzt wie in Grafiklibraries. Da setzt man die Farbe und kann anschließend etwas machen, das dann in der zuletzt gesetzten Farbe erstellt wird.

]]>
PdfPCell addElement() & setHorizontalAlignment() https://blog.bitkorn.de/pdfpcell-addelement-sethorizontalalignment/ Mon, 03 Oct 2016 08:15:18 +0000 http://blog.t-brieskorn.de/?p=205 Erstelle ich eine PdfPCell und füge mit addElement() beispielsweise eine Phrase hinzu, kann ich NICHT mit setHorizontalAlignment(Element.ALIGN_CENTER) die Ausrichtung des Inhalts bestimmen.\r\n

PdfPCell cell = new PdfPCell();\r\ncell.addElement(new Phrase("-"));\r\ncell.setHorizontalAlignment(Element.ALIGN_CENTER); // does not work\r\n

\r\n\r\nStattdessen muß man sich die Column holen:\r\n

PdfPCell cell = new PdfPCell();\r\ncell.getColumn().addText(new Phrase("-"));\r\ncell.setHorizontalAlignment(Element.ALIGN_CENTER); // OK\r\n

\r\n\r\nGuckt man sich den Source Code von PdfPCell bei Github an wird es deutlich. Die Methode addElement() fügt im obigen Beispiel das Element der PdfPCell hinzu. Wohingegen der Konstruktor es der Column hinzu fügt.\r\n\r\nDas funktionierende Beispiel oben, holt sich erst die Column aus der PdfPCell und packt dort die Phrase rein.\r\nDann in der Methode setHorizontalAlignment() wird der Column das Alignment gesetzt. Bedeutet, wenn man ein Element einfach mit addElement() hinzu fügt kann man es nicht horizontal ausrichten weil es nicht in der Column ist!

]]>