Display Lists dan Produksi Cetak

HotPDF mengompilasi aliran halaman yang dimuat menjadi instans THPDFPageDisplayList yang dapat digunakan kembali dengan metrik THPDFDisplayListInfo dan kotak pembatas objek konten

Rendering dokumen menyimpan daftar yang dikompilasi dalam cache, sedangkan pemanggil dapat meminta daftar yang dimiliki secara independen untuk eksekusi berulang atau kueri objek regional

Kontrol transparansi dan cetak

Replay bitmap non-progressive, direct-DC, Form, dan display-list semuanya meneruskan konten yang sudah di-tokenisasi lewat HPDFInterpretContentTokensDevice, yang memiliki traversi operator dan batas pembatalan

THPDFPageRenderer mengimplementasikan IHPDFContentOperatorDevice, sehingga traversi bersama memanggil state machine lengkapnya untuk grafis, teks, resource, clipping, pattern, transparansi, marked-content, dan gambar tanpa menurunkan rendering produksi ke permukaan callback semantik yang lebih kecil

Renderer mengeksekusi fungsi transfer dan kamus halftone Tipe 1, 5, 6, 10, atau 16 dari ExtGState sambil mempertahankan layar RGB independen dan penimpaan transfernya melalui q dan Q

THPDFInkCoverageInfo melaporkan cakupan CMYK rata-rata, cakupan area total maksimum, dan jumlah piksel di atas ambang yang dipilih

Rendering yang dibatasi dan bersamaan

THPDFRenderTileEvent menerima satu ubin berukuran pemanggil atau pita horizontal pada satu waktu, menjaga memori raster puncak tetap independen dari ukuran halaman penuh

RenderLoadedPagesParallel menumpangtindihkan kompilasi display list dengan pemutaran, memulai halaman siap pertama tanpa menunggu penghalang kompilasi penuh, menyeimbangkan kedua tahap secara dinamis di seluruh pekerja yang dibatasi, dan mengembalikan THPDFBitmapArray dalam urutan masukan

Kompilasi berjalan di luar kunci cache display list, sedangkan penerimaan yang diperiksa dua kali dan jumlah penggunaan yang dilindungi memungkinkan halaman yang tidak terkait dikompilasi secara bersamaan tanpa menduplikasi entri yang dipublikasikan atau mengeluarkan daftar selama pemutaran

THPDFParallelRenderPipelineInfo mengekspos hit cache, kompilasi, penyelesaian, konkurensi kompilasi dan render puncak, halaman yang dikompilasi pada hasil pertama, latensi hasil pertama, dan total waktu yang berlalu

RenderLoadedPagesParallelOrdered mengirimkan panggilan balik dalam urutan masukan pada utas pemanggil dan melepaskan setiap bitmap yang dipinjam setelah panggilan balik kembali, sedangkan kedalaman keluaran yang dipilih pemanggil menerapkan tekanan balik produsen dan menyisakan satu slot untuk halaman berikutnya yang diperlukan sehingga halaman awal yang lambat tidak dapat buntu di belakang hasil berikutnya

Streaming terurut menyimpan paling banyak satu display list dan render aktif per pekerja ditambah antrean bitmap selesai yang dibatasi, alih-alih menjaga seluruh keluaran pekerjaan tetap berada di memori

Backend render yang dapat dipasang mengonsumsi daftar terkompilasi yang sama melalui tampilan resource dokumen non-pemilik, sehingga jalur sinkron dan paralel menghindari penguraian ulang konten halaman sementara kemampuan backend menentukan apakah panggilan dapat tumpang tindih atau memerlukan pengiriman serial

Penjadwal memori puncak seluruh-proses kini membatasi kedua API paralel: perkiraan halaman terbesar mengurangi jumlah pekerja awal, setiap halaman yang diklaim menyisakan kumpulan kerja perkiraan lengkapnya, dan keluaran terurut mempertahankan penyisihan itu melalui pengiriman panggilan balik

Pembatalan penjadwal membangunkan penunggu anggaran pada pembatalan panggilan balik atau kegagalan pekerja, sedangkan telemetri mengekspos pekerja yang diminta versus yang efektif, bobot penyisihan puncak, halaman yang tertunda, dan waktu tunggu agregat

Dekode gambar bersama dikoordinasikan secara terpisah sehingga kerja halaman vektor tetap paralel tanpa merusak entri cache gambar terdekode

Konteks render paralel menyalin sekuens token glyph Type 3 yang immutable dan threshold screen halftone dari satu cache LRU berbatas, dengan mempertahankan kepemilikan lokal-renderer untuk state grafis yang bisa berubah dan resource GDI

SaveLoadedPageToPng, SaveLoadedPageToPngStream, SaveLoadedPagesToTiffBanded, dan SaveLoadedPagesToTiffStreamBanded mengonsumsi band renderer yang sama melalui encoder PNG atau TIFF streaming, sehingga halaman yang sangat besar mengeluarkan output terkompresi baris demi baris tanpa memegang framebuffer lengkap, sementara THPDFBandImageExportInfo melaporkan band yang dirender, baris terenkoding, worker, byte reservasi puncak, byte output, waktu tempuh, dan pembatalan

Dekode gambar bersama dikoordinasikan secara terpisah sehingga pekerjaan halaman vektor tetap paralel tanpa merusak entri cache gambar hasil dekode

PrefetchLoadedPages menghangatkan entri raster dengan token pembatalan khusus sambil mengompilasi dan merender di luar kunci cache, dan rendering halaman latar depan mendahului pekerja sebelum memulai kerja yang sensitif terhadap latensi

THPDFLoadedPagePrefetchInfo melaporkan kerja yang dijadwalkan, dimulai, selesai, di-cache, dirender, gagal, dibatalkan, dan didahului latar depan bersama dengan latensi pembatalan terakhir dan puncak

Alur kerja ICC

Transformasi rendering dapat menggabungkan profil sumber PDF, ruang warna campuran, profil bukti, profil keluaran, dan tujuan raster sRGB

Keempat maksud rendering ICC dan kompensasi titik hitam sejati diterapkan secara konsisten ke warna vektor dan sampel gambar di seluruh pipa

Renderer mengeksekusi transfer function dan dictionary halftone Type 1, 5, 6, 10, atau 16 dari ExtGState sambil mempertahankan screen RGB independen beserta penimpaan transfernya melalui q dan Q

THPDFInkCoverageInfo melaporkan rata-rata coverage CMYK, coverage area total maksimum, dan jumlah piksel di atas ambang yang dipilih

Output plat process dan spot mendukung colorant DeviceCMYK, Separation, dan DeviceN

Transformasi lengkap dibagikan di seluruh jalur rendering vektor, gambar, halaman, dan paralel melalui cache LRU 64 MiB yang aman-utas, dikunci oleh konten profil sumber, bukti, dan keluaran, maksud rendering efektif, dan kompensasi titik hitam

THPDFTrappingInfo menggabungkan deklarasi trapping dokumen, metadata halaman, dan diagnostik struktural TrapNet

Alur kerja ICC

Transform rendering bisa menggabungkan profil sumber PDF, ruang warna blend, profil proof, profil output, dan destinasi raster sRGB

Keempat rendering intent ICC dan kompensasi black-point sesungguhnya diterapkan secara konsisten pada warna vektor dan sampel gambar di seluruh pipeline

Transform lengkap dibagikan lintas jalur rendering vektor, gambar, halaman, dan paralel melalui cache LRU 64 MiB yang thread-safe, dikunci oleh konten profil sumber, proof, dan output, rendering intent efektif, serta kompensasi black-point

Flattening transparansi memakai ulang pipeline transform yang sama, lalu mengeluarkan tile CalRGB D65 bebas-jahitan di bawah budget piksel total-raster dan per-tile yang dikendalikan pemanggil

API utama