Native rich-text dış stylesheet'leri

Native XHTML decoder'ı, XHTML link öğeleri ve CSS @import kurallarıyla atıfta bulunulan, çağıranın sağladığı CSS kaynaklarını gerçek rich-text run'larına, kaydedilen zengin değerlere ve field appearance'larına uygular

Options := THPDFHeadlessRichTextDecodeOptions.Default;
Options.DocumentURI := 'https://example.test/forms/order.xhtml';
SetLength(Options.StyleSheets, 2);
Options.StyleSheets[0].URI := 'css/main.css';
Options.StyleSheets[0].CSS := '@import "colors.css"; span.total { font-weight: bold }';
Options.StyleSheets[0].ContentType := 'text/css';
Options.StyleSheets[1].URI := 'css/colors.css';
Options.StyleSheets[1].CSS := 'span.total { color: #a02030 }';
Runs := HPDFDecodeHeadlessRichText(XHTML, Options);
<body xmlns="http://www.w3.org/1999/xhtml">
  <link rel="stylesheet" href="css/main.css" />
  <span class="total">Total</span>
</body>

Kaynak kimliği ve cascade

Göreli referanslar RFC 3986 yol birleştirmesini ve nokta-segment kaldırmayı kullanır; query string'ler kaynak kimliğinin parçası kalır, fragment'lar kalmaz, scheme ve host harfleri normalleştirilirken kullanıcı bilgisi durumunu korur ve percent-escape hex harfleri durumsuz karşılaştırılır

Her import edilen sheet kendi URI'sine göre başka importları çözer ve bağımsız bir CSS namespace ortamına sahiptir; bir sheet'i import etmek, o sheet'in @namespace bildirimlerini ebeveynine sızdırmaz

Importlar, sıradan kurallardan ya da namespace bildirimlerinden önce, tırnaklı dizeleri ve CSS kaçışları dâhil url token'larını kabul eder; mevcut print/screen media query değerlendiricisi link media'sını ve import koşullarını yönetir

Import edilen bildirimler normal importance ve özgüllüklerle cascade'deki gerçek kaynak konumlarına girer; döngüsel bir referans yalnızca o kaynak etkinken atlanır, böylece sonraki yinelenen referanslar yeniden katkıda bulunabilir

Eksik kaynaklar, geçersiz yazılan referanslar ve CSS olmayan içerik türleri hiçbir bildirime katkıda bulunmaz; geçersiz çağıran-taraflı kaynak koleksiyonları EHPDFHeadlessRichTextCodecError raised eder

XHTML referansları ve seçili setler

Stylesheet ilişki token'ları ASCII durumsuz karşılaştırılır; devre dışı linkler yok sayılır, media ve type attribute'ları bir stylesheet'in katılıp katılmayacağını yönetir

Inline style öğeleri ve bağlı sheet'ler aynı durum-duyarlı title setlerini paylaşır; titlesız kalıcı sheet'ler etkin kalır

Açık bir StyleSheetTitle olmadan, uygun ilk başlıklı inline style ya da alternate olmayan link tercih edilen seti seçer; decoder bu title'ı bildirimleri toplamadan önce belirler, böylece seçilen title'a sahip önceki bir alternate kendi cascade konumunda katılır

Açık bir StyleSheetTitle, alternatifler dâhil eşleşen başlıklı inline ve bağlı sheet'leri seçer; eşleşen sheet'i olmayan bir title yalnızca kalıcı sheet'leri etkin bırakır

Tercih edilen-title taraması boş bir type ya da text/css kabul eder ve devre dışı ya da alternate linkleri atlar; kaynak erişilebilirliği ve media koşulları seçilen title'ı değiştirmez ve bildirimler kendi media, type ve kaynak kontrollerine hâlâ uyar

HTML ve XML base çözümlemesi

XHTML head içindeki href'li ilk XHTML base öğesi, href'ini DocumentURI'ye göre çözerek belge tabanını sağlar; base öğesindeki ya da atalarındaki xml:base bu aramayı değiştirmez

Decoder, link referanslarını ve inline importları çözmek için her ata xml:base'ini o belge tabanından başlayarak bir kez uygular; bağlı ya da import edilen bir sheet kendi importlarını kaynak URI'sine göre çözer

Örneğin DocumentURI=https://example.test/docs/form.xhtml, kök xml:base="a/", head base href="b/" ve link href="main.css" değerleri https://example.test/docs/b/a/main.css olarak çözülür

Boş ilk base href, yedek belge URI'sini kullanır; geçersiz ilk base href de o yedeği korur ve ilk-base konumunu tüketir, böylece sonraki base öğeleri onu değiştiremez

Bu sıralama, native decoder'ın birleşik HTML/XML profilini tanımlar; XML Base, ayrı bir HTML base mekanizmasının onunla nasıl birleştirileceğini kendisi tanımlamaz

Form data ve JSON operasyonları

Native document metotları üzerinden FDF RV ya da XFDF value-richtext import ederken THPDFHeadlessFormDataOptions üzerinde RichTextDocumentURI, RichTextStyleSheetTitle ve RichTextStyleSheets ayarlayın

Windows dosya işleri, Windows execute-json-v1 ve sürümlü native Linux C ABI, forms.import üzerinde aynı isteğe bağlı richTextResources nesnesini kabul eder

{
  "schemaVersion": 1,
  "type": "forms.import",
  "format": "xfdf",
  "richTextResources": {
    "documentURI": "https://example.test/forms/order.xhtml",
    "styleSheetTitle": "Print",
    "styleSheets": [
      {"uri": "css/main.css", "css": "span.total { color: red }", "contentType": "text/css"}
    ]
  }
}

Her JSON kaynağı için URI zorunludur ve boş olamaz; css ve contentType, documentURI ve styleSheetTitle gibi isteğe bağlı dizelerdir; sağlanan dizeler NUL içeremez

Kaynaklar, host tarafından sağlanan Unicode CSS metnidir; URI tanımlayıcıları dosya sistemi erişimi, ağ erişimi ya da callback kayıt layout değişiklikleri talep etmez

Çevreleyen import işlemi, bozuk kaynaklarda, cancellation'da, bütçe başarısızlığında ya da yayım başarısızlığında önceki belgesini korur; tam eşdeğer importlar mevcut bayt-baytına no-op davranışını korur

Yeniden kullanılabilir GUI-olmayan kabul

Tests/Linux/ExternalStyleSheets/Run.py gerçek çözülmüş run'ları, sınırlı başarısızlık davranışını, kaydedilen appearance'ları ve bağımsız PDF geometrisi ile piksellerini kontrol eder; Callbacks dizisi gerçek FDF/XFDF importlarını, no-op baytlarını ve başarısız-yayım işlemlerini çalıştırır

Tests/Linux/ExternalStyleSheets/Supplement/Run.py paylaşılan inline/link title setlerini, birleşik HTML/XML base çözümlemesini, ölçülmüş her otomatik-title cancellation sınırını ve başarılı bir yeniden denemenin izlediği derinlik başarısızlığını kontrol eder

Ek set, açık bir kaynak dizini ve derleyici yapılandırması kabul eder, gerçek kaynak ve bağımlılık kimliklerini kaydeder ve her çalıştırma için yeni bir çıktı dizini gerektirir

Sınırlar ve kalan iş

Kaynak sayısı en fazla 256, her çözülmüş URI en fazla 4096 UTF-16 code unit ve her title ya da içerik türü en fazla 256'dır; stylesheet metni ayrıca MaxCodeUnits'e uyar, toplu taramalar ve eşleşme mevcut node, toplam-code-unit, depth ve cancellation sınırlarına yüklenir

Form-data bağları, karşılık gelen decoder sınırları için MaxValueCodeUnits, MaxTotalCodeUnits, MaxObjects, MaxDepth ve işlemin cancellation token'ını kullanır

Import katmanları, ek CSS layout'u, tablolar, görseller ve daha geniş HTML kaynak yüklemesi ayrı iş olarak kalır

Selector'lar ve inline stylesheet'ler · Media profilleri · Form-data options

Native destek sorguları, desteklenen bildirim ve selector profiliyle @supports gruplarını ve supports() importlarını kabul eder; paylaşılan sınırlar ve cancellation kurtarmasıyla