function RenderPagesParallel(
const PageNumbers : array of Integer;
const Options : TPdfParallelRenderOptions;
const CancellationToken: IPdfCancellationToken = nil): TPdfParallelRenderReport;
RenderPagesParallel menangkap dokumen saat ini satu kali ke dalam TPdfRandomAccessStore, melepas enkripsi snapshot, dan menjaga sumber tetap tak berubah sampai semua dokumen worker tertutup
Tangkapan in-memory dibagikan langsung tanpa salinan byte-array kedua, tangkapan yang terlimpah diekspos melalui satu file mapping read-only, dan kegagalan mapping jatuh ke pembacaan blok FPDF_LoadCustomDocument dari store thread-safe yang sama
Setiap worker memuat salinan sementara privat dari biner PDFium yang aktif sebagai modul independen, menginisialisasi modul itu di thread workernya, dan memakai ulang FPDF_DOCUMENT miliknya sendiri selama memuat dan menutup halaman-halaman yang ditugaskan
Keadaan modul, dokumen, halaman, progressive-render, dan bitmap tidak pernah melintasi batas worker, sehingga panggilan konkuren yang tidak aman ke satu modul PDFium terhindar
PageNumbers memakai konvensi halaman publik berbasis satu dan array Results yang dikembalikan selalu cocok dengan urutan permintaan, bahkan ketika worker selesai tak berurutan atau satu halaman tertentu gagal
Setiap hasil yang sukses memiliki buffer piksel 32-bit top-down dengan Stride = Width * 4, memakai urutan byte BGRA kecuali reReverseByteOrder meminta RGBA
| Field | Default | Meaning |
|---|---|---|
Dpi | 96 | Resolusi target dari lebih dari 0 hingga 2400 DPI |
MaxWorkers | 0 | 0 memilih hingga empat worker, jika tidak 1 sampai 64 dengan batas jumlah permintaan |
MaxPixelsPerPage | 64 MiPixels | Menolak sebuah halaman sebelum mengalokasikan buffer hasil yang berukuran berlebihan |
MaxTotalOutputBytes | 512 MiB | Membatasi jumlah seluruh buffer piksel sukses yang dipertahankan |
Rotation | ro0 | Menerapkan rotasi yang sama ke setiap permintaan dan menukar dimensi output untuk 90 atau 270 derajat |
RenderOptions | [] | Flag render native PDFium termasuk anotasi, grayscale, pencetakan, smoothing, dan reverse byte order |
BackgroundColor | clWhite | Latar piksel awal sebelum PDFium melukis konten halaman |
pprsSucceeded mengembalikan dimensi, stride, format piksel, piksel, dan waktu yang berlalupprsCancelled tidak mengembalikan piksel ketika pembatalan teramati sebelum atau selama loop render progresifpprsFailed mengisolasi halaman tidak valid, kegagalan muat atau render native, atau penolakan anggaran sumber daya di ErrorMessageTotalOutputBytes, dan waktu berlalu end-to-endSourceSize, SourcePeakMemoryBytes, dan SourceStorageBackend memaparkan biaya tangkapan yang terbatasSourceBackingKind berupa ppsbSharedMemory, ppsbMemoryMappedFile, atau ppsbRandomAccessStore setelah tangkapan sumberreInvert dan reNightDuotone adalah transform bitmap pasca-render dan ditolak oleh API raw-buffer iniSaveMemoryLimit dan SaveTemporaryDirectory mengatur sumber yang ditangkap, sedangkan anggaran output mencakup buffer hasil yang dipertahankan, bukan alokasi internal PDFiumTPdf yang sama secara konkuren selama snapshot awal sedang ditangkapPixels individual setelah dikonsumsi
uses FPdfAsync;
var
Options: TPdfParallelRenderOptions;
Report: TPdfParallelRenderReport;
I: Integer;
begin
Options := TPdfParallelRenderOptions.Default;
Options.Dpi := 150;
Options.MaxWorkers := 4;
Options.RenderOptions := [reAnnotations];
Report := Pdf1.RenderPagesParallel([1, 3, 5, 7], Options, CancelToken);
for I := 0 to High(Report.Results) do
if Report.Results[I].Status = pprsSucceeded then
ConsumeTopDownPixels(Report.Results[I]);
end;