PDFium Delphi Component Docs

RenderPagesParallel method

Component: TPdf  ·  Unit: PDFium
Merender beberapa permintaan halaman secara konkuren sementara setiap worker memiliki dokumen PDFium dan handle halaman yang terisolasi

Syntax

function RenderPagesParallel(
  const PageNumbers : array of Integer;
  const Options : TPdfParallelRenderOptions;
  const CancellationToken: IPdfCancellationToken = nil): TPdfParallelRenderReport;

Description

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

Options

FieldDefaultMeaning
Dpi96Resolusi target dari lebih dari 0 hingga 2400 DPI
MaxWorkers00 memilih hingga empat worker, jika tidak 1 sampai 64 dengan batas jumlah permintaan
MaxPixelsPerPage64 MiPixelsMenolak sebuah halaman sebelum mengalokasikan buffer hasil yang berukuran berlebihan
MaxTotalOutputBytes512 MiBMembatasi jumlah seluruh buffer piksel sukses yang dipertahankan
Rotationro0Menerapkan 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
BackgroundColorclWhiteLatar piksel awal sebelum PDFium melukis konten halaman

Results

Remarks

Example

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;

See Also

RenderPage, RenderPageProgressive, RenderTile