Looking for itext Keywords? Try Ask4Keywords

itextSchriften: iText 5 versus iText 7


Bemerkungen

In den ersten Versionen von iText gab es nur eine Schriftartklasse: Font .

Mit dieser Schriftart können Sie ein Font Objekt für vierzehn Schriftarten aus fünf Schriftfamilien erstellen: Helvetica (normal, fett, schräg, fett-oblique), Times Roman (normal, fett, kursiv, fett-kursiv), Courier (normal, fett) , schräg, fett-schräg), Symbol und Zapf Dingbats.

Ein solches Font Objekt wurde folgendermaßen erstellt:

Font font = new Font(FontFamily.TIMES_ROMAN);

Sie mussten auch die Schriftgröße definieren, zum Beispiel:

Font font14pt = new Font(FontFamily.TIMES_ROMAN, 14);

Die Standardschriftart war Helvetica. die Standardschriftgröße 12.

iText wurde weiterentwickelt und weitere Schriftarten wurden unterstützt. Die BaseFont Klasse wurde für den internen Umgang mit diesen Schriftarten verwendet. Eine BaseFont Klasse wurde wie BaseFont erstellt:

BaseFont bf_russian = BaseFont.createFont(
    "resources/fonts/FreeSans.ttf",
    "CP1251",
    BaseFont.EMBEDDED);

Der erste Parameter ist der Pfad zu einem Schriftartprogramm, zum Beispiel eine TTF-Datei, der zweite Parameter ist die Kodierung, zum Beispiel CP1251 für kyrillische Zeichen. Der dritte Parameter gibt an, ob eine Teilmenge der Schriftart eingebettet werden muss.

Die BaseFont Klasse wird verwendet, wenn Sie Inhalt auf der untersten Ebene hinzufügen, z. B. wenn Sie beginText() in Ihrem Code mithilfe von beginText() , setFontAndSize() , setTextMatrix() , showText() und endText() Sequenzen endText() . Normalerweise verwenden Sie diesen einfachen Ansatz nur, wenn Sie ein PDF-Spezialist sind. Wenn Sie nichts über die PDF-Syntax wissen, sollten Sie keine solche Sequenz verwenden.

Sie können auch die BaseFont Klasse verwenden, um ein Font Objekt zu erstellen:

Font russian = new Font(bf_russian, 12);

Jetzt können wir die russian Schrift verwenden, um einen Paragraph zu erstellen, der russischen Text enthält.

In iText 5 gibt es einige andere Möglichkeiten, Font Objekte zu erstellen. Dies ist jedoch die häufigste Vorgehensweise. Die Leute waren manchmal durch den Unterschied zwischen Font und BaseFont und verwendeten nicht immer den richtigen Ansatz.

Was wir in iText 7 behoben haben:

Wir haben die Dinge einheitlicher gemacht. Es gibt jetzt eine einzige PdfFont Klasse, und Sie erstellen eine Schrift mit einer PdfFontFactory :

PdfFont font = PdfFontFactory.createFont(FontConstants.TIMES_ROMAN);
PdfFont russian = PdfFontFactory.createFont(
    "src/main/resources/fonts/FreeSans.ttf", "CP1251", true);

Sie müssen nicht mehr verschiedene Schriftobjekte erstellen, wenn Sie zu einer anderen Schriftgröße wechseln möchten. Das Umschalten auf eine andere Schriftgröße kann einfach mit der Methode setFontSize() :

Paragraph p = new Paragraph("Hello World! ")
    .add(new Text("Hallo Wereld! ").setFontSize(14))
    .add(new Text("Bonjour le monde! ").setFontSize(10));

Die Standardschriftart ist immer noch Helvetica und die Standardschriftgröße ist immer noch 12, aber Sie können jetzt eine Schriftart (und eine Schriftgröße) für das Dokument definieren:

document.setFont(font);

In diesem Fall ist die font die Standardschriftart, wenn Sie einen Baustein (z. B. einen Paragraph ) hinzufügen, ohne eine Schriftart anzugeben.

Möchten Sie mehr wissen?

Lesen Sie dazu Einführung in die PdfFont-Klasse aus Kapitel 1 des Lernprogramms " iText 7: Building Blocks" . Holen Sie sich das kostenlose E-Book!

Schriften: iText 5 versus iText 7 Verwandte Beispiele