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
- Backend render yang dapat dipasang
THotPDF.CompileLoadedPageDisplayListTHPDFPageDisplayList.GetTokenTHPDFPageDisplayList.GetObjectTHPDFPageDisplayList.GetTokenTHPDFPageDisplayList.GetObjectTHPDFPageDisplayList.QueryObjectIndexesTHPDFPageDisplayList.PageObjectTHPDFPageDisplayList.ResourcesTHPDFPageDisplayList.MediaBoxTHotPDF.RenderLoadedPageTilesdanRenderLoadedPageBandsTHotPDF.RenderLoadedPageTilesParalleldanRenderLoadedPageBandsParallelTHPDFParallelTileRenderInfoTHotPDF.SaveLoadedPageToPngTHotPDF.SaveLoadedPageToPngStreamTHotPDF.SaveLoadedPagesToTiffBandedTHotPDF.SaveLoadedPagesToTiffStreamBandedTHPDFBandImageExportInfoTHotPDF.RendererSharedCacheMaxBytesTHotPDF.RenderLoadedPagesParallelTHotPDF.RenderLoadedPagesParallelOrderedTHPDFParallelRenderPipelineInfoTHotPDF.PrefetchLoadedPagesTHotPDF.GetLoadedPagePrefetchInfoTHPDFLoadedPagePrefetchInfoTHotPDF.FlattenLoadedPageTransparencyTHotPDF.FlattenLoadedPageComplexGraphicsTHotPDF.RenderLoadedPageSeparationPlateTHotPDF.GetLoadedPageSpotColorantsTHotPDF.RewriteLoadedPageColorsTHotPDF.AnalyzeLoadedPageInkCoverageTHotPDF.InspectLoadedPageTrappingTHotPDF.ConfigureRenderICCWorkflow