2009-11-21 12 views
10

I definierte einen Tag Karte, und bekam eine XML-Datendatei. Ich möchte die XML-Datendatei mithilfe von iText in PDF konvertieren. Die Frage ist, wie Schriftarten (z. B. polnische Schrift, chinesische Schrift) in das Ziel-PDF eingebettet werden, wenn XML in PDF konvertiert wird?Schrift einbetten in PDF-Datei von iText mit

Antwort

9

Wenn Sie mit iText mehr Arbeit tun, können Sie in die iText book investieren wollen - es hat Beispiele für alle Funktionen von iText.

Es gibt einen Parameter, die Sie angeben, wenn Sie Ihre Schriftart erstellen, die Einbettung von Schriftarten definiert:

BaseFont helvetica = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED); 
Font font = new Font(helvetica, 12, Font.NORMAL); 

Sie können mehr iText Schrift verwandte Beispiele finden Sie hier: http://1t3xt.info/examples/browse/?page=toc&id=14

+1

Ich habe einige Beispiele in iText Buch studiert, scheint keiner gab einen Hinweis auf mein Problem. In Ihrem Beispiel gibt es ein Flag "BaseFont.EMBEDDED", das verwendet werden kann, um die Einbettung der Font-Datei anzuzeigen. Aber was ich tun muss, wandelt XML-Datei in PDF-Verzeichnis mit definierten Tagmap, der gesamte Prozess ist nur ein Anruf. Es gibt keinen Ort, an dem ich Code zum Einbetten von Schriftarten einfügen kann. In Ihrem Beispiel können wir die Schriftart zu einem gewissen Absatz, so dass Schrift in diesem Absatz eingebettet ist. Aber für die automatische PDF-Erzeugung mit Tagmap, wie können wir die Schriftart einstellen, mit welcher Klasse/Schnittstelle können wir die Schriftart einbetten? Vielen Dank. – moonli

+4

Problem gelöst. Wir können Schriftart mit Konfiguration in TagMap einbetten. Wenn Sie das Attribut "embedded" auf "true" setzen, wird die Schriftarteneinbettung angezeigt. Danke trotzdem. – moonli

+0

https://www.manning.com/books/itext-in-action-second-edition ist dies das Buch? –

0

Sie können versuchen, es in PDF/A-Umwandlung, die die Schriftarten alle eingebettet hat.

PdfReader reader = new PdfReader(GetTemplateBytes()); 
    pst = new PdfStamper(reader, Response.OutputStream); 

    pst.Writer.SetPdfVersion(PdfWriter.PDF_VERSION_1_4); 
    pst.Writer.PDFXConformance = PdfWriter.PDFA1A; 
7

Hier ist eine wirklich einfache Möglichkeit, iText anzuweisen, alle Schriftarten einzubetten. Fügen Sie dieses vor Ihrem Code, um Schriften zu laden:

FontFactory.defaultEmbedding = true; 
+1

Beachten Sie, dass in iTextSharp, FontFactory.DefaultEmbedding eine schreibgeschützte Eigenschaft ist. – howcheng