Zum Fußzeileninhalt springen
PRODUKTVERGLEICHE

C# PDF-Bibliotheksvergleich: IronPDF vs iText 7, PDFSharp, Aspose, Syncfusion, QuestPDF & mehr

Die Arbeit hier ist Richtigkeit, nicht Umwandlung. Es ist das, was verhindert, dass Japanisch, Arabisch oder Thailändisch zu leeren Kästchen oder verstümmeltem Mojibake in einem generierten PDF wird. Da IronPDF die Chrome-Engine verwendet, wird jedes Zeichen, das in einem Chrome-Browser korrekt angezeigt wird, auch im PDF korrekt angezeigt. Der Mechanismus ist klein: Setzen Sie RenderingOptions.InputEncoding auf UTF-8 und deklarieren Sie den Zeichensatz im HTML, damit die Engine und das Dokument übereinstimmen, wie die Bytes gelesen werden sollen.

using IronPdf;

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.InputEncoding = System.Text.Encoding.UTF8;

var pdf = renderer.RenderHtmlAsPdf(
    "<html><head><meta charset='utf-8'></head><body>こんにちは世界</body></html>");
pdf.SaveAs("utf8.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.InputEncoding = System.Text.Encoding.UTF8;

var pdf = renderer.RenderHtmlAsPdf(
    "<html><head><meta charset='utf-8'></head><body>こんにちは世界</body></html>");
pdf.SaveAs("utf8.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.InputEncoding = System.Text.Encoding.UTF8

Dim pdf = renderer.RenderHtmlAsPdf("<html><head><meta charset='utf-8'></head><body>こんにちは世界</body></html>")
pdf.SaveAs("utf8.pdf")
$vbLabelText   $csharpLabel

Mehrsprachige und lokalisierte Dokumente

Dies ist der Alltag. IronPDF rendert nicht-lateinische Schriften wie Chinesisch, Japanisch, Arabisch, Hebräisch, Russisch und Thailändisch sowie jede andere Unicode-Sprache. Jede App, die Rechnungen, Abrechnungen oder Briefe in der eigenen Sprache des Kunden erstellt, hängt davon ab, dass der Ausgangstext wirklich korrekt gelesen werden kann.

Von rechts nach links laufende Sprachen wie Arabisch und Hebräisch werden von der Engine verarbeitet, einschließlich bidirektionalem Text und kontextueller Buchstabenformung. Das ist wirklich schwer, manuell richtig hinzubekommen, daher behebt das Setzen auf die Text-Engine des Browsers eine ganze Kategorie von Layout-Fehlern.

Ein Dokument, mehrere Sprachen

Gemischtsprachige Dokumente werden unterstützt, sodass ein einziges PDF mehrere Schriftarten gleichzeitig enthalten kann: ein zweisprachiger Vertrag oder ein Produktblatt mit parallelen Übersetzungen. Das eigene Beispiel der Seite rendert Japanisch, Arabisch und Thailändisch zusammen.

Spezielle Symbole und willkürlicher Input

Über vollwertige Sprachen hinaus deckt UTF-8 Währungszeichen, mathematische Symbole und akzentuierte europäische Zeichen ab, sodass ein Dokument, das €, £, ¥ und akzentuierte Namen mischt, getreu wiedergegeben wird. Dies ist besonders wichtig, wenn der Text aus einer Datenbank, einer API oder Benutzerübermittlungen stammt: Sie kontrollieren selten die Sprache der Daten, nur die Kodierung.

Normalerweise die Schriftart, nicht die Kodierung

Die Kodierung sagt der Engine, wie die Bytes gelesen werden sollen. Die Schriftart entscheidet, ob das Glyph existiert. Korrektes UTF-8, gepaart mit einer Schriftart, der CJK- oder arabische Glyphen fehlen, produziert immer noch leere Kästchen. Die Kodierung war nie das Problem; die fehlende Schriftart war es.

Die zuverlässige Lösung besteht darin, eine Web-Schriftart in CSS anzugeben, die IronPDF vollständig unterstützt:

const string html =
    "<html><head><meta charset='utf-8'>" +
    "<style>body { font-family: 'Noto Sans JP', sans-serif; }</style>" +
    "<link href='https://fonts.googleapis.com/css2?family=Noto+Sans+JP&display=swap' rel='stylesheet'>" +
    "</head><body>こんにちは世界</body></html>";

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.InputEncoding = System.Text.Encoding.UTF8;
renderer.RenderHtmlAsPdf(html).SaveAs("utf8-webfont.pdf");
const string html =
    "<html><head><meta charset='utf-8'>" +
    "<style>body { font-family: 'Noto Sans JP', sans-serif; }</style>" +
    "<link href='https://fonts.googleapis.com/css2?family=Noto+Sans+JP&display=swap' rel='stylesheet'>" +
    "</head><body>こんにちは世界</body></html>";

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.InputEncoding = System.Text.Encoding.UTF8;
renderer.RenderHtmlAsPdf(html).SaveAs("utf8-webfont.pdf");
Imports System.Text

Const html As String = "<html><head><meta charset='utf-8'>" &
    "<style>body { font-family: 'Noto Sans JP', sans-serif; }</style>" &
    "<link href='https://fonts.googleapis.com/css2?family=Noto+Sans+JP&display=swap' rel='stylesheet'>" &
    "</head><body>こんにちは世界</body></html>"

Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.InputEncoding = Encoding.UTF8
renderer.RenderHtmlAsPdf(html).SaveAs("utf8-webfont.pdf")
$vbLabelText   $csharpLabel

Dies ist wirklich ein verstecktes Bereitstellungsproblem. Es funktioniert auf Ihrer Maschine, die die Schriftarten hat, und schlägt in einem abgespeckten Linux-Container oder serverlosen Funktion fehl, die sie nicht hat. Wenn internationaler Text lokal gerendert wird, sich aber nach der Bereitstellung in Kästchen verwandelt, ist die Schriftart vor der Kodierung zu verdächtigen. Eine gebündelte Web-Schriftart oder die Installation der Schriftart auf dem Server behebt das Problem.

Häufig gestellte Fragen

Wie aktiviere ich die UTF-8-Textwiedergabe in IronPDF?

Setzen Sie renderer.RenderingOptions.InputEncoding = System.Text.Encoding.UTF8 und fügen Sie <meta charset='utf-8'> im HTML-Kopf ein. Dies stimmt die Chrome-Engine und das Dokument darauf ab, wie der Bytestrom zu interpretieren ist.

Unterstützt IronPDF Sprachen von rechts nach links wie Arabisch und Hebräisch?

Ja. Die Chrome-Engine von IronPDF verarbeitet bidirektionalen Text und die kontextabhängige Formung von Buchstaben für RTL-Skripte, einschließlich Arabisch und Hebräisch, ohne zusätzliche Konfiguration über die UTF-8-Codierung und eine passende Schriftart hinaus.

Warum zeigt mein PDF leere Kästchen anstelle von japanischen oder arabischen Zeichen?

Die Codierung ist fast sicher korrekt eingestellt — das Problem ist die Schriftart. Korrektes UTF-8 gepaart mit einer Schriftart, die keine CJK- oder arabischen Glyphen enthält, führt dennoch zu leeren Kästchen. Geben Sie eine Webschriftart an, die die erforderlichen Skripte abdeckt (z. B. Noto Sans JP für Japanisch) über CSS an oder installieren Sie diese auf dem Server.

Kann ein einzelnes IronPDF-Dokument mehrere Sprachen enthalten?

Ja. Gemischtsprachige Dokumente werden vollständig unterstützt. Ein einzelnes PDF kann Japanisch, Arabisch, Thailändisch und europäischen Text zusammen wiedergeben, solange die Schriftart alle erforderlichen Unicode-Blöcke abdeckt.

Warum funktioniert internationaler Text auf meiner Maschine, zeigt aber Kästchen in der Produktion?

Ihre Entwicklungsmaschine hat Systemschriftarten installiert. Ein abgespeckter Linux-Container oder eine serverlose Funktion hat dies typischerweise nicht. Bündeln Sie die erforderliche Webschriftart in Ihrem HTML oder installieren Sie die Schriftart auf dem Server. Die Codierung ist nicht das Problem; die fehlende Schriftart ist es.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen

Iron-Support-Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an