Display List'ler ve Baskı Üretimi

HotPDF, yüklü sayfa stream'lerini THPDFDisplayListInfo metric'leri ve içerik nesnesi bounding box'larıyla yeniden kullanılabilir THPDFPageDisplayList örneklerine derler

Belge rendering'i derlenmiş listeleri önbelleğe alır; çağıranlar ise tekrarlanan yürütme veya bölgesel nesne sorguları için bağımsız sahipli bir liste isteyebilir

Paylaşılan production yorumlayıcısı

Non-progressive bitmap, direct-DC, Form ve display-list replay'in hepsi, önceden token'laşmış içeriği operatör dolaşımının ve cancellation sınırlarının sahibi olan HPDFInterpretContentTokensDevice üzerinden geçirir

THPDFPageRenderer IHPDFContentOperatorDevice uygular; böylece paylaşılan dolaşım, production rendering'ini daha küçük semantic callback yüzeyine indirgemeden eksiksiz graphics, metin, resource, clipping, pattern, transparency, marked-content ve image state machine'ini devreye sokar

Display list'ler, stream'ler derlenirken operatör token indekslerini cache'ler ve yalnızca bu indeksleri yeniden oynatır; böylece operand taramaları tekrarlanmaz; cache'lenen komut sayısını THPDFPageDisplayList.OperatorCount ve THPDFDisplayListInfo.OperatorCount gösterir

Yalnızca IHPDFContentDevice uygulayan semantic device'lar yetenek filtreli callback'leri korur; eksiksiz operatör device'ları ise her seferinde tek doğrulanmış operatörü, operatör başına bir cancellation kontrol noktasıyla alır

Sınırlı ve eşzamanlı rendering

THPDFRenderTileEvent her seferinde çağıranın boyutlandırdığı tek bir tile veya yatay band alır; tepe raster belleğini tam sayfa boyutundan bağımsız tutar

RenderLoadedPagesParallel, display-list derlemesini playback ile üst üste bindirir; tam derleme bariyerini beklemeden hazır ilk sayfayı başlatır, her iki aşamayı sınırlı worker'lar arasında dinamik dengeler ve THPDFBitmapArray değerini girdi sırasında döndürür

Derleme, display-list önbellek kilidi dışında çalışır; çift kontrollü kabul ve korumalı kullanım sayaçları, ilgisiz sayfaların yayımlanmış girdileri çoğaltmadan veya playback sırasında bir listeyi süpürmeden eşzamanlı derlenmesini sağlar

THPDFParallelRenderPipelineInfo; önbellek isabetlerini, derlemeleri, tamamlananları, tepe derleme ve render eşzamanlılığını, ilk sonuçta derlenen sayfaları, ilk sonuç gecikmesini ve toplam geçen süreyi açığa çıkarır

RenderLoadedPagesParallelOrdered, callback'leri çağıran thread üzerinde girdi sırasıyla teslim eder ve her ödünç bitmap'i callback döndükten sonra serbest bırakır; çağıranın seçtiği çıktı derinliği üretici backpressure'ı uygular ve sıradaki gereken sayfa için bir yuva ayırır, böylece yavaş bir ilk sayfa sonraki sonuçların ardında kilitlenemez

Sıralı streaming; iş çıktısının tamamını yerleşik tutmak yerine, worker başına en fazla bir display list ve etkin render ile sınırlı tamamlanmış-bitmap kuyruğunu tutar

Takılabilir render backend'leri, aynı derlenmiş listeleri sahiplik taşımayan bir belge resource görünümü üzerinden tüketir; böylece senkron ve paralel yollar sayfa içeriğini yeniden ayrıştırmaktan kaçınır, backend yetenekleri ise çağrıların üst üste binebileceğini mi yoksa serileştirilmiş dağıtım mı gerektiğini belirler

Süreç geneli tepe-bellek zamanlayıcısı artık her iki paralel API'yi de sınırlar: en büyük sayfa tahmini ilk worker sayısını düşürür, talep edilen her sayfa eksiksiz tahmini çalışma kümesini rezerve eder ve sıralı çıktı bu rezervi callback teslimine kadar korur

Zamanlayıcı cancellation'ı, callback iptalinde veya worker hatasında bütçe bekleyenlerini uyandırır; telemetry ise istenen ve etkin worker sayısını, tepe rezerv ağırlığını, geciken sayfaları ve toplam bekleme süresini açığa çıkarır

RenderLoadedPageTilesParallel ve RenderLoadedPageBandsParallel, ödünç satır-öncelikli tile'ları veya yukarıdan aşağıya band'ları izole worker'lar üzerinden dağıtır; her worker en fazla bir tile sahiplenir ve çağıranın verdiği çalışma-belleği üst sınırı ilk talepten önce eşzamanlılığı azaltır

Paralel render bağlamları, değişmez Type 3 glyph token dizilerini ve halftone threshold screen'lerini tek bir sınırlı LRU önbelleğinden kopyalar; değişebilir graphics state ve GDI kaynakları için renderer yerelli sahipliğini korur

SaveLoadedPageToPng, SaveLoadedPageToPngStream, SaveLoadedPagesToTiffBanded ve SaveLoadedPagesToTiffStreamBanded, aynı band renderer'ı streaming PNG veya TIFF encoder'ları üzerinden kullanır; böylece çok büyük sayfalar tam bir framebuffer tutmadan sıkıştırılmış çıktıyı satır satır üretir, THPDFBandImageExportInfo ise render edilen band'leri, encode edilen satırları, worker'ları, tepe rezervasyon byte'larını, çıktı byte'larını, geçen süreyi ve iptali raporlar

Paylaşılan görsel çözme ayrı koordine edilir; böylece vektör sayfa işi, çözülmüş görsel önbellek girdilerini bozmadan paralel kalır

PrefetchLoadedPages, önbellek kilidi dışında derleyip render ederken özel bir cancellation token ile raster girdilerini ısıtır; ön plan sayfa rendering'i ise gecikmeye duyarlı işe başlamadan önce worker'ı önlüyor

THPDFLoadedPagePrefetchInfo; zamanlanan, başlatılan, tamamlanan, önbelleğe alınan, render edilen, başarısız, iptal edilen ve ön planda öne alınan işleri, son ve tepe cancellation gecikmesiyle birlikte bildirir

Transparency ve baskı denetimleri

Transparency flattening önce display-list transparency sayısına ve çağıran tanımlı bir piksel üst sınırına bakar, ardından sayfa boyamasını kayıpsız Flate-sıkıştırılmış kalibre RGB bir görselle değiştirir

Separation veya DeviceN renk maddesi içeren sayfalar vektör içerik olarak kalır; algılanan renk maddeleri ve korunum durumu çağırana açılır

Renderer, ExtGState içindeki transfer fonksiyonlarını ve Type 1, 5, 6, 10 veya 16 halftone sözlüklerini yürütür; bağımsız RGB screen'lerini ve bunların transfer override'larını q ve Q boyunca korur

THPDFInkCoverageInfo; ortalama CMYK kaplamasını, maksimum toplam alan kaplamasını ve seçilen eşiğin üzerindeki piksel sayısını bildirir

Process ve spot plaka çıktısı DeviceCMYK, Separation ve DeviceN renk maddelerini destekler

Yüklü sayfa renk yeniden yazımı, karmaşık sayfaları Gray, RGB veya CMYK'ye çevirmek için aynı eksiksiz renderer'ı kullanır; basit device-renk sayfa içeriğini vektör olarak tutar ve açık bir spot-plaka politikası uygular

THPDFTrappingInfo; belge trapping bildirimlerini, sayfa meta verisini ve TrapNet yapısal teşhisini birleştirir

ICC iş akışı

Rendering transform'u; bir PDF kaynak profili, blend renk uzayı, proof profili, çıktı profili ve sRGB raster hedefini birleştirebilir

Dört ICC rendering intent'inin tamamı ve gerçek black-point dengelemesi, pipeline boyunca vektör renklere ve görsel örneklerine tutarlı biçimde uygulanır

Eksiksiz transform'lar; kaynak, proof ve çıktı profili içerikleri, etkin rendering intent ve black-point dengelemesiyle anahtarlanan thread-safe bir 64 MiB LRU önbelleği üzerinden vektör, görsel, sayfa ve paralel rendering yollarında paylaşılır

Transparency flattening aynı transform pipeline'ını yeniden kullanır ve çağıranın denetlediği toplam-raster ile tile başına piksel bütçeleri altında dikişsiz D65 CalRGB tile'ları üretir

Temel API'ler