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