Porównanie bibliotek PDF w C#: IronPDF vs iText 7, PDFSharp, Aspose, Syncfusion, QuestPDF i inne
Praca tutaj dotyczy poprawności, nie konwersji. To zapobiega przekształcaniu się tekstu japońskiego, arabskiego lub tajskiego w puste pola lub zniekształcone mojibake w wygenerowanym PDF. Ponieważ IronPDF wykorzystuje silnik Chrome, każdy znak wyświetlany poprawnie w przeglądarce Chrome wyświetla się poprawnie w PDF. Mechanizm jest prosty: ustaw RenderingOptions.InputEncoding na UTF-8 i zadeklaruj zestaw znaków w HTML, aby silnik i dokument zgadzały się co do sposobu odczytu bajtów.
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")
Wielojęzyczne i lokalizowane dokumenty
To codzienny przypadek. IronPDF renderuje skrypty niełacińskie, w tym chiński, japoński, arabski, hebrajski, rosyjski i tajski oraz wszystkie inne języki Unicode. Każda aplikacja generująca faktury, zestawienia lub listy w języku klienta zależy od tego, aby wydruk faktycznie był poprawnie czytelny.
Od prawej do lewej i skomplikowane skrypty
Języki od prawej do lewej, takie jak arabski i hebrajski, są obsługiwane przez silnik, w tym tekst dwukierunkowy i formatowanie liter kontekstowych. To naprawdę trudne do wykonania ręcznie, więc poleganie na silniku tekstowym przeglądarki usuwa całą kategorię błędów układu.
Jeden dokument, kilka języków
Dokumenty mieszane są obsługiwane, więc jeden PDF może jednocześnie zawierać wiele skryptów: dwujęzyczna umowa lub arkusz produktu z równoległymi tłumaczeniami. Przykład na stronie wyświetla jednocześnie japoński, arabski i tajski.
Specjalne symbole i dowolne wejście
Poza pełnymi językami, UTF-8 obejmuje znaki walutowe, symbole matematyczne i akcentowane znaki europejskie, więc dokument mieszający €, £, ¥ i akcentowane nazwy będzie wyświetlany wiernie. Ma to kluczowe znaczenie, gdy tekst pochodzi z bazy danych, API lub zgłoszeń użytkowników: rzadko kontrolujesz język danych, tylko kodowanie.
Zwykle czcionka, nie kodowanie
Kodowanie informuje silnik, jak odczytywać bajty. Czcionka decyduje, czy glif istnieje. Poprawny UTF-8 w połączeniu z czcionką, która nie zawiera glifów CJK lub arabskich, nadal produkuje puste pola. To kodowanie nigdy nie było problemem; brakujący krój pisma był.
Niezawodnym rozwiązaniem jest określenie czcionki webowej w CSS, co IronPDF w pełni obsługuje:
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")
To naprawdę ukryty problem wdrożenia. Działa na twoim komputerze, który ma czcionki, i zawodzi w odchudzonym kontenerze Linux lub funkcji bezserwerowej, która ich nie ma. Jeśli tekst międzynarodowy renderuje się lokalnie, ale zmienia się w pudełka po wdrożeniu, podejrzewaj czcionkę przed kodowaniem. Dołączona czcionka webowa lub zainstalowanie kroju pisma na serwerze rozwiązuje problem.
Często Zadawane Pytania
Jak włączyć renderowanie tekstu UTF-8 w IronPDF?
Ustaw renderer.RenderingOptions.InputEncoding = System.Text.Encoding.UTF8 i uwzględnij <meta charset='utf-8'> w nagłówku HTML. To dostosowuje działanie silnika Chrome i dokumentu w zakresie interpretacji strumienia bajtów.
Czy IronPDF obsługuje języki od prawej do lewej, takie jak arabski i hebrajski?
Tak. Silnik Chrome IronPDF obsługuje tekst dwukierunkowy i kontekstowe kształtowanie liter dla skryptów RTL, w tym arabskiego i hebrajskiego, bez dodatkowej konfiguracji poza kodowaniem UTF-8 i odpowiednią czcionką.
Dlaczego mój PDF pokazuje puste kwadraty zamiast japońskich lub arabskich znaków?
Kodowanie prawie na pewno jest ustawione poprawnie — problemem jest czcionka. Poprawne UTF-8 w połączeniu z czcionką bez glifów CJK lub arabskich wciąż prowadzi do pustych kwadratów. Określ czcionkę internetową, która obejmuje wymagane skrypty (np. Noto Sans JP dla japońskiego) za pomocą CSS lub zainstaluj ją na serwerze.
Czy pojedynczy dokument IronPDF może zawierać wiele języków?
Tak. Dokumenty z wieloma językami są w pełni obsługiwane. Jeden PDF może renderować tekst japoński, arabski, tajski i europejski razem, o ile czcionka zawiera wszystkie wymagane bloki Unicode.
Dlaczego międzynarodowy tekst działa na moim komputerze, ale pokazuje kwadraty w produkcji?
Twój komputer deweloperski ma zainstalowane czcionki systemowe. Odchudzony kontener systemu Linux lub funkcja bezserwerowa zazwyczaj ich nie ma. Dołącz wymaganą czcionkę internetową w HTML lub zainstaluj krój pisma na serwerze. Problemem nie jest kodowanie; brakująca czcionka jest.

