PDFium Delphi Component Docs

RenderPagesParallel 메서드

컴포넌트: TPdf  ·  유닛: PDFium
모든 워커가 분리된 PDFium 문서와 페이지 핸들을 소유한 채로 여러 페이지 요청을 동시에 렌더링합니다

Syntax

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

Description

RenderPagesParallel은 현재 문서를 TPdfRandomAccessStore로 한 번 캡처하고 스냅샷 암호화를 제거한 뒤 모든 워커 문서가 닫힐 때까지 소스를 불변으로 유지합니다

메모리 내 캡처는 두 번째 바이트 배열 복사 없이 직접 공유되고, 디스크로 넘어간 캡처는 읽기 전용 파일 매핑 하나로 노출되며, 매핑에 실패하면 같은 스레드 안전 저장소에서 FPDF_LoadCustomDocument 블록 읽기로 폴백합니다

모든 워커는 활성 PDFium 바이너리의 사본을 독립 모듈로 로드하고 그 모듈을 자기 워커 스레드에서 초기화하며, 할당된 페이지를 로드하고 닫는 동안 자신의 FPDF_DOCUMENT를 재사용합니다

모듈, 문서, 페이지, 점진적 렌더, 비트맵 상태는 워커 경계를 절대 넘지 않으므로 하나의 PDFium 모듈로의 안전하지 않은 동시 호출을 피합니다

PageNumbers는 공개 1 기반 페이지 규약을 따르고 반환되는 Results 배열은 워커가 순서와 무관하게 끝나거나 개별 페이지가 실패해도 항상 요청 순서와 일치합니다

성공한 결과는 Stride = Width * 4인 위에서 아래로 향하는 32비트 픽셀 버퍼를 소유하며 reReverseByteOrder가 RGBA를 요청하지 않는 한 BGRA 바이트 순서를 사용합니다

Options

FieldDefaultMeaning
Dpi960보다 크고 2400 DPI 이하인 대상 해상도입니다
MaxWorkers00은 최대 네 워커를 고르고, 그 외에는 요청 개수로 제한된 1부터 64 사이 값입니다
MaxPixelsPerPage64 MiPixels지나치게 큰 결과 버퍼를 할당하기 전에 페이지를 거부합니다
MaxTotalOutputBytes512 MiB보관된 성공 픽셀 버퍼의 합을 제한합니다
Rotationro0모든 요청에 같은 회전을 적용하고 90도나 270도에서는 출력 크기를 맞바꿉니다
RenderOptions[]주석, 그레이스케일, 인쇄, 스무딩, 역방향 바이트 순서를 포함한 네이티브 PDFium 렌더 플래그입니다
BackgroundColorclWhitePDFium이 페이지 내용을 그리기 전의 초기 픽셀 배경입니다

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