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");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");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.

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.