C# PDF Kütüphanesi Karşılaştırması: IronPDF vs iText 7, PDFSharp, Aspose, Syncfusion, QuestPDF & Daha Fazlası
Buradaki çalışma doğruluk içindir, dönüştürme için değil. Bu, Japonca, Arapça veya Tayca metnin oluşturulan bir PDF'te boş kutular veya bozulmuş mojibake olmasını önler. Çünkü IronPDF, Chrome motorundan yararlanır; Chrome tarayıcısında doğru görüntülenen herhangi bir karakter, PDF'te de doğru görüntülenir. Mekanizma küçüktür: RenderingOptions.InputEncoding UTF-8 olarak ayarlayın ve HTML'de karakter kümesini ilan edin, böylece motor ve belge, baytları nasıl okuyacakları konusunda hemfikir olurlar.
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")
Çok dilli ve yerelleştirilmiş belgeler
Bu, günlük vakadır. IronPDF, Çince, Japonca, Arapça, İbranice, Rusça ve Tayca'yı içeren Latin olmayan yazıları ve diğer tüm Unicode dillerini işler. Faturalar, bildirimler veya müşterinin kendi dilinde mektup üreten herhangi bir uygulama, çıktının doğru okunabilmesi için buna dayanır.
Sağdan sola ve karmaşık yazılar
Arapça ve İbranice gibi sağdan sola diller, motor tarafından işlenir; bu, çift yönlü metni ve bağlamsal harf şekillendirmeyi içerir. Bu, elle doğru yapması gerçekten zor olduğundan, tarayıcının metin motoruna dayanmak bir bütün yerleşim hatası kategorisini ortadan kaldırır.
Tek belge, birçok dil
Karışık dil belgeleri desteklenir, bu nedenle tek bir PDF aynı anda birden fazla yazı taşıyabilir: çift dilli bir sözleşme veya paralel çevirilerin bulunduğu bir ürün sayfası. Sayfanın kendi örneği Japonca, Arapça ve Taycayı bir arada görüntüler.
Özel semboller ve rasgele giriş
Tam dillere ek olarak, UTF-8 para birimi işaretlerini, matematiksel sembolleri ve aksanlı Avrupa karakterlerini kapsar, böylece €, £, ¥ ve aksanlı isimlerin karıştığı bir belge sadık bir şekilde görüntülenir. Bu, metin bir veritabanından, bir API'den veya kullanıcı gönderimlerinden geldiğinde en çok önemlidir: genellikle verinin dilini değil, yalnızca kodlamayı kontrol edersiniz.
Genelde kodlama değil, yazı tipidir
Kodlama, motora baytların nasıl okunacağını söyler. Yazı tipi, glyph'in var olup olmadığını belirler. Doğru UTF-8, CJK veya Arap glyph'lerini içermeyen bir yazı tipi ile eşleştirildiğinde, hala boş kutular üretir. Problem asla kodlama değildi; eksik yazı tipi idi.
Güvenilir çözüm, CSS'de bir web yazı tipini belirtmektir; IronPDF bunu tamamen destekler:
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")
Bu gerçekten gizlenmiş bir dağıtım problemidir. Yazı tiplerinin bulunduğu makinenizde çalışır, ancak yazı tiplerinin bulunmadığı hafifletilmiş Linux konteyneri veya sunucusuz işlevde başarısız olur. Uluslararası metin yerel olarak görüntüleniyor ancak dağıtıldığında kutulara dönüşüyorsa, kodlamadan önce yazı tipini şüphe edin. Paketlenmiş bir web yazı tipi veya yazı tipini sunucuya kurmak problemi çözer.
Sıkça Sorulan Sorular
IronPDF'de UTF-8 metin oluşturmayı nasıl etkinleştiririm?
renderer.RenderingOptions.InputEncoding = System.Text.Encoding.UTF8 ayarlayın ve HTML başlığına <meta charset='utf-8'> ekleyin. Bu, Chrome motoru ve belgenin bayt akışını nasıl yorumlayacağını hizalar.
IronPDF, Arapça ve İbranice gibi sağdan sola dilleri destekliyor mu?
Evet. IronPDF'nin Chrome motoru, Arapça ve İbranice de dahil olmak üzere sağdan sola betikler için çift yönlü metin ve bağlamsal harf şekillendirmeyi herhangi bir ekstra yapılandırma olmadan UTF-8 kodlaması ve uygun bir yazı tipiyle işler.
PDF'mde Japonca veya Arapça karakterler yerine neden boş kutular görünüyor?
Kodlama neredeyse kesinlikle doğru ayarlanmış - sorun yazı tipi ile ilgilidir. Doğru UTF-8, CJK veya Arapça glifleri olmayan bir yazı tipi ile eşleştirilmiş olsa da yine de boş kutular üretir. CSS üzerinden gerekli betikleri kapsayan bir web yazı tipi (örneğin Japonca için Noto Sans JP) belirtin veya sunucuya yükleyin.
Tek bir IronPDF belgesi birden fazla dil içerebilir mi?
Evet. Karma-dil belgeleri tam olarak desteklenir. Tek bir PDF, gerekli Unicode bloklarını kapsayan yazı tipi olduğu sürece Japonca, Arapça, Tayca ve Avrupa metinlerini birlikte oluşturabilir.
Uluslararası metin bilgisayarımda çalışıyor ama üretimde kutular gösteriyor, neden?
Geliştirme makinenizde sistem yazı tipleri yüklüdür. Stripped-down bir Linux konteyneri veya sunucusuz bir fonksiyon genellikle bu değildir. HTML'nizde gereken web yazı tipini paketleyin veya sunucuya tipi yükleyin. Sorun kodlama değil; eksik yazı tipidir.

