PDF Oluşturmada C#'da Özel Tireleme Nasıl Eklenir?

This article was translated from English: Does it need improvement?
Translated
View the article in English

C# PDF oluşturma sırasında özel tireleme, dar sütunlarda, faturalar, sözleşmeler ve çok dilli raporlarda garip boşluk, kelime taşması ve zayıf metin kaydırmayı düzeltmeye yardımcı olur. Bir PDF render bileşeni doğru tireleme desenlerini uygulamadığında, hizalanmış metinlerde büyük boşluklar oluşabilir veya satırlar arasında kötü kırılabilir.

IronPDF'de, tireleme, Word tarzı bir belge nesne modeli yerine HTML'den PDF'e geçiş sırasında Chrome motoru üzerinden işlenir. CSS hyphens: auto özelliği, görüntüleyicinin kelimeleri geçerli hece sınırlarında bölmesine olanak tanır ve IronPDF, PDF oluşturma sırasında bu davranışı uygular. CustomHyphenation içindeki ChromePdfRenderOptions özelliği, hangi tireleme kalıplarının kullanılacağını kontrol eder.

Pattern dosyaları TeX formatını kullanır ve yerel bir dosya yolundan veya uzaktan bir URL'den yüklenebilir. Bu, farklı diller ve belge düzenleri için özel tireleme kuralları tanımlanmasını ve nihai PDF'de kelime kırmalar üzerinde daha fazla kontrol sağlanmasını mümkün kılar.

Bu kılavuz, yerel ve uzaktan desen yükleme, yedekleme davranışı, sınırlamalar, hata işleme ve önbellekleme dahil olmak üzere C#'da CustomHyphenationDefinitions API'sinin nasıl kullanılacağını açıklamaktadır.


NuGet NuGet ile yükleyin

PM >  Install-Package IronPdf

NuGet'te hızlı kurulum için https://www.nuget.org/packages/IronPdf'i kontrol edin. 10 milyonun üzerinde indirme ile, C# ile PDF geliştirmeyi dönüştürüyor. DLL veya Windows yükleyici'yi de indirebilirsiniz.

Hızlı Başlangıç

  1. IronPDF aşağıdaki NuGet Paket Yöneticisi ile yükleyin

    PM > Install-Package IronPdf
  2. Bu kod parçacığını kopyalayın ve çalıştırın.

    using IronPdf;
    
    // Create renderer and assign custom hyphenation patterns from a remote URL
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.CustomHyphenation = new CustomHyphenationDefinitions
    {
        PatternSource = "https://raw.githubusercontent.com/hyphenation/tex-hyphen/master/hyph-utf8/tex/generic/hyph-utf8/patterns/txt/hyph-en-us.pat.txt",
        ExceptionSource = "https://raw.githubusercontent.com/hyphenation/tex-hyphen/master/hyph-utf8/tex/generic/hyph-utf8/patterns/txt/hyph-en-us.hyp.txt"
    };
    
    // Render HTML with CSS hyphens:auto to trigger word breaking
    var pdf = renderer.RenderHtmlAsPdf("<div style='text-align:justify; hyphens:auto; width:120px;'>Supercalifragilisticexpialidocious</div>");
    pdf.SaveAs("hyphenated.pdf");
  3. Canlı ortamınızda test için dağıtım yapın

    Ücretsiz deneme ile bugün projenizde IronPDF kullanmaya başlayın

    arrow pointer

Minimal İş Akışı

  1. IronPDF NuGet paketini yükleyin
  2. Bir `` örneği oluşturun
  3. değerini yeni bir değerine ayarlayın ve `` yolunu veya URL'yi belirtin
  4. HTML içeriğinin CSS'sine `` ekleyin
  5. `` işlevini çağırın ve sonucu kaydedin

PDF Rederinglemede Özel Tireleme Nasıl Çalışır?

sınıfı, IronPDF'nin görüntüleme işlemi sırasında tireleme kurallarını nereden yükleyeceğini tanımlar. Chromium motoru bu kalıpları okur ve bir HTML öğesinde CSS kuralı mevcut olduğunda bunları uygular.

CustomHyphenationDefinitions Sınıfı Nedir?

Bu sınıf iki özellik sunar:

Tablo 1: CustomHyphenationDefinitions Özellikleri
ÖzellikTürGerekliAçıklama
PatternSourcestringEvetTireleme desen dosyasının yolu veya URL'si (örn., hyph-en-us.pat.txt)
ExceptionSourcestringHayırTireleme istisna dosyasının yolu veya URL'si (örn., hyph-en-us.hyp.txt)

Desen dosyaları, GitHub'daki tex-hyphen projesi tarafından sürdürülen TeX tireleme formatını takip eder. Her dil için depoda iki dosya bulunmaktadır: desen kuralları için hyph-{lang}.pat.txt ve istisna listesi için hyph-{lang}.hyp.txt. GitHub'da barındırılan dosyalara atıfta bulunurken, ham içerik URL'si (https://raw.githubusercontent.com/ ile başlayan) gereklidir — standart bir GitHub sayfası URL'si, desen metnini değil HTML'yi döndürür.

Özel Heceleme Yerleşik Dil Ayarını Ne Zaman Geçersiz Kılar?

enum ve, üzerinde İngilizce (ABD), İngilizce (İngiltere) ve Rusça için yerleşik ön ayarlar sağlar. özelliği, her ikisi de ayarlandığında bu enumdan önceliklidir ve açık bir öncelik zincirini takip eder:

  1. Özel Heceleme — geçerli bir `` ile ayarlanmışsa, özel kalıplar kullanılır
  2. HyphenationLanguage — özel desenler yapılandırılmamışsa, yerleşik dil ön ayarı uygulanır
  3. Hiçbiri — hiçbiri ayarlanmamışsa, tireleme gerçekleşmez

Özel Desen Yükleme Başarısız Olduğunda Ne Olur?

Desen yükleme sırasında meydana gelen hatalar kaydedilir ancak istisnalar atılmaz. Render işlemi, başarısız olmaktan ziyade tirsiz devam eder. `` değeri de yapılandırılmışsa, işleyici bu yerleşik ön ayara geri döner.

Bu sessiz başarısızlık davranışı, üretim ortamları için kasıtlı bir tasarım tercihi. Uzaktaki bir desen dosyasını fetch ederken ağ zaman aşımı, geçersiz dosya yolu, DNS çözümleme hatası veya hatalı desen içeriği, render hattını çökertecek değil. PDF yine üretilir - sadece tiressiz kelime bölmeleri yoktur.

Takas güdümü, görünürlüktür. Kötü bir desen dosyası veya ulaşılmaz bir URL, her iki kaynak değeri de kullanarak yapılacak sonraki her render üzerinde sessizce etki gösterecek (çünkü önbelleğe alma da başarısızlık durumunu saklar). Öneri, desen dosyalarını doğrulamak ve uzaktan erişime sahip URL'lerin erişilebilirliğini test etmektir - uygulama başlatma veya CI/CD dağıtım kontrolleri sırasında - render zamanı değil.


Desen Dosyaları Uzaktan URL'den Nasıl Yüklenir?

`` öğesini uzak bir URL'ye yönlendirmek, dosyaları projeye dahil etmeden özel hecelemeyi uygulamanın en hızlı yoludur. Aşağıdaki örnek ABD Tex-hyphen havuzundan İngilizce desenleri yükler ve hizalanmış bir metin bloğu oluşturur:

using IronPdf;

var renderer = new ChromePdfRenderer();

// Load custom patterns from a remote TeX hyphenation repository
renderer.RenderingOptions.CustomHyphenation = new CustomHyphenationDefinitions
{
    PatternSource = "https://raw.githubusercontent.com/hyphenation/tex-hyphen/master/hyph-utf8/tex/generic/hyph-utf8/patterns/txt/hyph-en-us.pat.txt",
    ExceptionSource = "https://raw.githubusercontent.com/hyphenation/tex-hyphen/master/hyph-utf8/tex/generic/hyph-utf8/patterns/txt/hyph-en-us.hyp.txt"
};

string html = @"
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; }
        .narrow-column {
            width: 150px;
            text-align: justify;
            hyphens: auto;
            -webkit-hyphens: auto;
            border: 1px solid #ccc;
            padding: 10px;
        }
    </style>
</head>
<body>
    <div class='narrow-column'>
        The extraordinarily sophisticated implementation demonstrates
        how hyphenation significantly improves the typographical quality
        of justified text in constrained column widths.
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("remote-hyphenation.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// Load custom patterns from a remote TeX hyphenation repository
renderer.RenderingOptions.CustomHyphenation = new CustomHyphenationDefinitions
{
    PatternSource = "https://raw.githubusercontent.com/hyphenation/tex-hyphen/master/hyph-utf8/tex/generic/hyph-utf8/patterns/txt/hyph-en-us.pat.txt",
    ExceptionSource = "https://raw.githubusercontent.com/hyphenation/tex-hyphen/master/hyph-utf8/tex/generic/hyph-utf8/patterns/txt/hyph-en-us.hyp.txt"
};

string html = @"
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; }
        .narrow-column {
            width: 150px;
            text-align: justify;
            hyphens: auto;
            -webkit-hyphens: auto;
            border: 1px solid #ccc;
            padding: 10px;
        }
    </style>
</head>
<body>
    <div class='narrow-column'>
        The extraordinarily sophisticated implementation demonstrates
        how hyphenation significantly improves the typographical quality
        of justified text in constrained column widths.
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("remote-hyphenation.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

' Load custom patterns from a remote TeX hyphenation repository
renderer.RenderingOptions.CustomHyphenation = New CustomHyphenationDefinitions With {
    .PatternSource = "https://raw.githubusercontent.com/hyphenation/tex-hyphen/master/hyph-utf8/tex/generic/hyph-utf8/patterns/txt/hyph-en-us.pat.txt",
    .ExceptionSource = "https://raw.githubusercontent.com/hyphenation/tex-hyphen/master/hyph-utf8/tex/generic/hyph-utf8/patterns/txt/hyph-en-us.hyp.txt"
}

Dim html As String = "
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; }
        .narrow-column {
            width: 150px;
            text-align: justify;
            hyphens: auto;
            -webkit-hyphens: auto;
            border: 1px solid #ccc;
            padding: 10px;
        }
    </style>
</head>
<body>
    <div class='narrow-column'>
        The extraordinarily sophisticated implementation demonstrates
        how hyphenation significantly improves the typographical quality
        of justified text in constrained column widths.
    </div>
</body>
</html>"

Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("remote-hyphenation.pdf")
$vbLabelText   $csharpLabel

Çıktı

Oluşturulan PDF, kelime sonları hece sınırlarında kesilmiş şekilde hizalı paragrafı gösterir. Tireleme olmadan, aynı metin büyük kelime arası boşluklar oluşturur veya sütunu taşır.

Chromium uyumluluğu için hem hem de CSS bildirimleri gereklidir. `` kuralı, tirelemeyi en görünür hale getirir. Hedef HTML elemanları üzerinde CSS bildirimi yoksa, özel desenler yüklenir ancak asla uygulanmaz.

Lütfen dikkate alınURL ham metin içeriğini işaret etmelidir. https://github.com/hyphenation/tex-hyphen/blob/master/... gibi standart bir GitHub URL'si, desen doğrulamasını geçemeyecek bir HTML sayfa sarmalayıcısı döndürür. https://raw.githubusercontent.com/... formunu kullanın veya GitHub'daki "Raw" düğmesine tıklayarak doğru URL'yi alın.

Uzak Kaynak Sınırlamaları Nelerdir?

Tablo 2: Uzaktan URL Kısıtlamaları
KısıtlamaDeğer
ProtokollerHTTP ve HTTPS (HTTPS önerilir)
İzin verilen içerik türleritext/plain, application/octet-stream
Maksimum yanıt boyutu5 MB
İstek zaman aşımı10 saniye
GüvenlikÖzel/yerel IP'lere yapılacak istekler (10.x.x.x, 192.168.x.x, localhost), SSRF saldırıları önlemek için engellidir
Reddedilen içerikİkili dosyalar, null byte içeren dosyalar,
Ahmad Sohail
Full Stack Geliştirici

Ahmad, C#, Python ve web teknolojilerinde sağlam bir temele sahip bir full-stack geliştiricidir. Gerçek dünyadaki uygulamalarda ölçeklenebilir yazılım çözümleri oluşturmaktan ve tasarım ile işlevselliğin nasıl buluştuğunu keşfetmekten derin bir ilgi duyar.

...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 19,014,616 | Sürüm: 2026.5 just released
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronPdf
bir örnek çalıştır HTML'nizi bir PDF'ye dönüştüğünü izleyin.

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara