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