function RenderPagesParallel(
const PageNumbers : array of Integer;
const Options : TPdfParallelRenderOptions;
const CancellationToken: IPdfCancellationToken = nil): TPdfParallelRenderReport;
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
| Field | Default | Meaning |
|---|---|---|
Dpi | 96 | 0'dan büyük, 2400 DPI'ya kadar hedef çözünürlük |
MaxWorkers | 0 | 0 en fazla dört işçi seçer; aksi halde istek sayısıyla sınırlı 1 ile 64 arası |
MaxPixelsPerPage | 64 MiPixels | Boyutu aşmış bir sonuç tamponu ayırmadan önce sayfayı reddeder |
MaxTotalOutputBytes | 512 MiB | Saklanan başarılı piksel tamponlarının toplamını sınırlar |
Rotation | ro0 | Her 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ı |
BackgroundColor | clWhite | PDFium sayfa içeriğini boyamadan önceki ilk piksel arka planı |
pprsSucceeded; boyutları, stride'ı, piksel biçimini, pikselleri ve geçen süreyi döndürürpprsCancelled, iptal aşamalı işleme döngüsünden önce ya da sırasında gözlemlendiğinde piksel döndürmezpprsFailed; geçersiz bir sayfayı, yerel yükleme ya da işleme hatasını veya kaynak bütçesi reddini ErrorMessage içinde yalıtırTotalOutputBytes içinde saklanan çıktı baytlarını ve uçtan uca geçen süreyi birleştirirSourceSize, SourcePeakMemoryBytes ve SourceStorageBackend, sınırlı yakalama maliyetini açığa çıkarırSourceBackingKind, kaynak yakalama sonrasında ppsbSharedMemory, ppsbMemoryMappedFile ya da ppsbRandomAccessStore olurreInvert ve reNightDuotone, işleme sonrası bitmap dönüşümleridir ve bu ham tampon API'si tarafından reddedilirSaveMemoryLimit ve SaveTemporaryDirectory yakalanan kaynağı yönetir; çıktı bütçesi ise PDFium iç ayırmalarını değil saklanan sonuç tamponlarını kapsarTPdf örneğini eşzamanlı olarak değiştirmeyin, boşaltmayın ya da kaydetmeyinPixels dizilerini tükettikten sonra temizleyerek serbest bırakın
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;