Optional-content viewer state
Native rasterization, ISO 32000-1:2008 8.11.4.4 ve 8.11.4.5 bölümlerinin viewer-tarzı optional-content önerilerini açıkça uygulayabilir
Default options, ViewerState=nil bırakır ve her iki anotasyon kullanımında bağımsız final-form D davranışını korur — AS'i otomatik uygulamadan
Access := Document.GetRenderAccess(0);
Context := THPDFOptionalContentContext.Default;
Context.Zoom := 2;
Context.Language := 'en-US';
Viewer := THPDFHeadlessOptionalContentState.Create(Access, Context);
try
Viewer.SetGroupState(10, 0, True);
Options := THPDFHeadlessRenderOptions.Default;
Options.ViewerState := Viewer;
Viewer.Event := hocePrint;
Options.Usage := hruPrint;
HPDFRenderHeadlessPagePNGFile(Access, OutputFile, Options);
finally
Viewer.Free;
end;
View, D'yi başlatır, eşleşen View uygulamalarını uygular, ardından manuel override'ları; Print veya Export uygulamaları, o operation için mevcut önerileri geçici olarak değiştirir ve state object'ini veya PDF dictionary'lerini değiştirmez
Eşleşen uygulamalar ve kategoriler boyunca her aktif önerinin bir grup için ON olması gerekir; eksik usage bilgisi öneri sağlamaz ve o grubun mevcut state'ini korur
Desteklenen kategoriler View, Print, Export, Zoom, Language ve User'dır; CreatorInfo ve PageElement bilgi verici olarak kalır
Zoom, kapsayıcı bir min ve kapsayıcı-olmayan bir max kullanır; en az bir sınır gereklidir ve default'lar sıfır ve sonsuzluktur; Language, uygulamanın OCG'leri içindeki kesin büyük-küçük-harf-duyumsuz tag'leri tercih eder, aksi hâlde Preferred ON işaretli birincil-dil gruplarıyla eşleşir
User, açıkça sağlanan Individual, Title veya Organization'ı, kesin Unicode metni kullanarak bir string'e veya ad array'ine karşı karşılaştırır; PDFDocEncoding, UTF-16 ve PDF 2.0 UTF-8 text string'leri decoded anlamlarını korur
OCG'leri atlanmış bir uygulama, boş bir grup setine default'ludur; mevcut bir Print usage dictionary'sinden atlanan PrintState, öneri sağlamaz
AS, kategorileri aynı-adlı event ile sınırlamaz — böylece bir Print uygulaması, Zoom veya Language önerilerini aynı açık context ile uygulayabilir
OCMD politikaları, özyinelemeli VE ifadeleri, iç-ice marked content, Form XObject'ler, görüntüler ve anotasyon görünümleri, sonuçlanan grup state'lerini mevcut sınırlı visibility path'i üzerinden tüketir
Manuel değişiklikler, temizlenene veya geri alınana kadar context değişiklikleri boyunca kalıcıdır; belge reload, mutation, close veya destruction, state'i kalıcı olarak sonlandırır ve taze erişim ve yeni bir object gerektirir
Ödünç alınan state'i her render sırasında canlı ve değişmeden tutun; read-only yeniden kullanım, altta-yatan adapter'ın callback eşzamanlılık sözleşmesi yürürlükte kaldığı sürece mümkündür
Render işi, grup araması, dil aday taramaları, manuel-seçim araması, sınırlı onaltılık ve UTF-8 metin decoding'i ve geçici state depolaması, operation, token, decoded-byte, working-byte ve cancellation limitlerine katılır
SetGroupState, 100000-seçim kapasiteli çağıran-yönlü bir state-container operation'dır; render limitleri tüketimi bağımsız sınırlar ve uygulamalar, harici seçim isteklerine uygun limitler koymalıdır
Viewer event'i, anotasyon Usage'ından bağımsızdır; hiçbir option, print izni vermez, SetOCGState action'ları yürütmez, rich media aktive etmez veya bir kullanıcı interface'i oluşturmaz
Kabul, bağımsız bildirilmiş state'ler ve kesin RGB dikdörtgen maskeleri, lifetime ve mutation testleri, reentrant ve serialize-callback'li eşzamanlı rendering ve ayrı MuPDF ve Poppler gözlemleri kullanır
Reader default-context gözlemleri, açık native Zoom, Language, User veya manuel-state eşitliklerinin yerine geçmez; düz geometri eşlikçileri, raster koordinatlarını bağımsız doğrular
Linux versiyonlu JSON operation'ları
{
"schemaVersion": 1,
"type": "render",
"dpi": 72,
"usage": "view",
"optionalContent": {
"event": "print",
"zoom": 2,
"language": "en-US",
"individual": "Alice",
"title": "Engineer",
"organization": "Example",
"selections": [
{"objectNumber": 10, "generationNumber": 0, "enabled": true}
]
}
}
optionalContent'ı atlamak statik D davranışını korur; bir object, default View event'i, zoom 1 ve boş language ve user context string'leriyle otomatik state'i aktive eder
Event, view, print veya export kabul eder ve anotasyon usage'dan bağımsız kalır; işletim-sistemi dili, kullanıcı identity'si veya display zoom'u çıkarılmaz
Context string'leri her biri en fazla 4096 UTF-16 code unit kabul eder; zoom sonlu, pozitif ve en fazla 1000000000 olmalıdır
Selection'lar pozitif bir object number, sıfırdan 65535'e kadar bir generation number ve açık bir Boolean enabled value gerektirir; operation, working-memory limiti içinde en fazla 1024 seçim kabul eder ve tekrar-referanslar son sağlanan state'i kullanır
Her operation, kendi ödünç alınmış native state'ini oluşturur ve serbest bırakır — bu nedenle istenen manuel seçimleri sonraki bir istekle yeniden gönderin; PDF dictionary'leri ve bu object'siz sonraki render'lar önceki yapılandırmalarını korur
Bozuk JSON option'ları invalid-argument status döndürür; kabul edilen-bütçe başarısızlıkları budget-exceeded status döndürür ve bozuk belge metadata'sı veya bayat grup referansları, PNG yayımından önce mevcut render parse-error status'ünü korur
Capabilities, optionalContent.automaticState'i, üç event'i, açık context üyelerini, manuel seçim desteğini ve operation-scoped lifetime'ı raporlar
Gerçek düz ve AES R5/R6 Language/User kaynaklarını Tests/Linux/Build-LinuxABIOptionalAutomaticFixtures.py OUTPUT ile üretin, ardından her native ABI build'ine karşı Tests/Linux/Run-LinuxABIOptionalAutomaticAcceptance.sh LIBRARY FIXTURES NEW_OUTPUT'u çalıştırın
Callback kabulü, bağımsız piksel formülleri, katı JSON türleri, encryption, bütçeler, cancellation, sticky output/result başarısızlıkları, same-handle recovery ve tutulan viewer state'in yokluğunu denetler; pypdf, cryptography, NumPy ve Pillow gerektirir ve masaüstü viewer başlatmasını bastırır
Bkz. THPDFHeadlessOptionalContentState, THPDFOptionalContentContext ve IHPDFHeadlessRenderLifetime