PDFium Delphi Component Docs

FlattenPageRotation Método

Componente: TPdf  ·  Unidade: PDFium
Fixa o /Rotate atual de cada página no fluxo de conteúdo, nas caixas de página e nos retângulos de anotação e então redefine /Rotate para 0, de modo que o layout visual seja preservado sem depender da dica de exibição de rotação

Syntax

function FlattenPageRotation(
  const Options : TPdfFlattenRotationOptions;
  out Report : TPdfFlattenRotationReport): Boolean; overload;

function FlattenPageRotation(
  const PageNumbers : array of Integer;
  const Options : TPdfFlattenRotationOptions;
  out Report : TPdfFlattenRotationReport): Boolean; overload;

Description

Muitas ferramentas a jusante (pipelines de impressão antigos, extratores de imagens, pré-processadores de OCR, conversores raster) ignoram a entrada de página /Rotate e renderizam páginas rotacionadas na orientação errada. FlattenPageRotation aplica a inversa da rotação atual ao conteúdo da página, aos retângulos de anotação e às caixas de página, e então define /Rotate como 0. Após a chamada, a página visível é idêntica ao original rotacionado, mas não depende mais de o visualizador aplicar a dica de rotação

A sobrecarga de um único argumento processa todas as páginas; a sobrecarga PageNumbers aceita um array base zero para que os chamadores possam achatar um subconjunto. Páginas já com /Rotate=0 são contadas em Report.SkippedPageCount e deixadas intactas

Internamente, cada página rotacionada passa por FPDFPage_CountObjects + FPDFPage_GetObject + FPDFPageObj_TransformF para o conteúdo, depois FPDFPage_GetAnnot + FPDFAnnot_GetRect / FPDFAnnot_SetRect para as anotações, depois FPDFPage_SetMediaBox / FPDFPage_SetCropBox para as caixas de página e, por fim, FPDFPage_SetRotation com 0. A matriz é derivada da MediaBox não rotacionada retornada por FPDFPage_GetMediaBox

Parameters

Remarks

Example

var
  Options: TPdfFlattenRotationOptions;
  Report: TPdfFlattenRotationReport;
begin
  Pdf1.FileName := 'C:\Scanned.pdf';
  Pdf1.Active := True;
  Options := TPdfFlattenRotationOptions.Default;
  Pdf1.FlattenPageRotation(Options, Report);
  Pdf1.SaveAs('C:\Scanned_flat.pdf');
end;

See Also

PageRotation, TransformPageObject, SetPageBox