PDFium Delphi Component Docs

Método FlattenPageRotation

Componente: TPdf  ·  Unidade: PDFium
Incorpora o /Rotate atual de cada página no fluxo de conteúdo, nas caixas de página e nos retângulos de anotações, e depois repõe /Rotate em 0, para que o esquema visual se mantenha sem depender da dica de apresentação da 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 rasterizados) ignoram a entrada de página /Rotate e apresentam páginas rodadas na orientação errada. FlattenPageRotation aplica o inverso da rotação atual ao conteúdo da página, aos retângulos de anotações e às caixas de página, e depois define /Rotate como 0. Após a chamada, a página visível é idêntica ao original rodado, mas já não depende do leitor aplicar a dica de rotação

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

Internamente, cada página rodada 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 rodada devolvida 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