PDFium Delphi Component Docs

RenderPagesParallel yöntemi

Component: TPdf  ·  Unit: PDFium
Her işçinin yalıtılmış bir PDFium belgesine ve sayfa tanıtıcısına sahip olmasıyla birlikte birden çok sayfa isteğini eşzamanlı işler

Syntax

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

Description

RenderPagesParallel, geçerli belgeyi bir kez TPdfRandomAccessStore içine yakalar, anlık görüntü şifrelemesini kaldırır ve her işçi belge kapanana kadar kaynağı değişmez tutar

Bellek içi yakalama ikinci bir bayt dizisi kopyası olmadan doğrudan paylaşılır; taşmış yakalama tek bir salt okunur dosya eşlemesi üzerinden açığa çıkarılır ve eşleme hatası, aynı iş parçacığı güvenli depodan FPDF_LoadCustomDocument blok okumalarına geri döner

Her işçi, etkin PDFium ikili dosyasının özel geçici bir kopyasını bağımsız bir modül olarak yükler, o modülü kendi işçi iş parçacığında başlatır ve atanan sayfaları yükleyip kapatırken kendi FPDF_DOCUMENT değerini yeniden kullanır

Modül, belge, sayfa, aşamalı işleme ve bitmap durumu hiçbir zaman işçi sınırlarını geçmez; bu, tek bir PDFium modülüne güvensiz eşzamanlı çağrıları önler

PageNumbers herkese açık bir tabanlı sayfa kuralını kullanır ve döndürülen Results dizisi, işçiler sıra dışı bitse ya da tek bir sayfa başarısız olsa bile her zaman istek sırasıyla eşleşir

Her başarılı sonuç, Stride = Width * 4 değerine sahip yukarıdan aşağıya 32 bitlik bir piksel tamponu taşır; reReverseByteOrder RGBA istemedikçe BGRA bayt sırası kullanılır

Options

FieldDefaultMeaning
Dpi960'dan büyük, 2400 DPI'ya kadar hedef çözünürlük
MaxWorkers00 en fazla dört işçi seçer; aksi halde istek sayısıyla sınırlı 1 ile 64 arası
MaxPixelsPerPage64 MiPixelsBoyutu aşmış bir sonuç tamponu ayırmadan önce sayfayı reddeder
MaxTotalOutputBytes512 MiBSaklanan başarılı piksel tamponlarının toplamını sınırlar
Rotationro0Her isteğe aynı döndürmeyi uygular ve 90 ya da 270 derece için çıktı boyutlarını takas eder
RenderOptions[]Ek açıklamalar, gri tonlama, yazdırma, yumuşatma ve ters bayt sırası dahil yerel PDFium işleme bayrakları
BackgroundColorclWhitePDFium sayfa içeriğini boyamadan önceki ilk piksel arka planı

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