PDFium Delphi Component Docs

FlattenPageRotation Metodo

Componente: TPdf  ·  Unità: PDFium
Fissa il valore attuale di /Rotate di ogni pagina nel content stream, nei box di pagina e nei rettangoli delle annotazioni, poi riporta /Rotate a 0 così il layout visivo è preservato senza fare affidamento sull'hint di visualizzazione della rotazione

Sintassi

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;

Descrizione

Molti strumenti a valle (pipeline di stampa datate, estrattori di immagini, preprocessori OCR, convertitori raster) ignorano la voce di pagina /Rotate e renderizzano le pagine ruotate con l'orientamento sbagliato. FlattenPageRotation applica l'inverso della rotazione corrente al contenuto della pagina, ai rettangoli delle annotazioni e ai box di pagina, poi imposta /Rotate a 0. Dopo la chiamata la pagina visibile è identica all'originale ruotato, ma non dipende più dal visualizzatore che applica l'hint di rotazione

L'overload a singolo argomento elabora ogni pagina; l'overload PageNumbers accetta un array a base zero così i chiamanti possono appiattire un sottoinsieme. Le pagine già a /Rotate=0 vengono conteggiate in Report.SkippedPageCount e lasciate intatte

Internamente ogni pagina ruotata passa attraverso FPDFPage_CountObjects + FPDFPage_GetObject + FPDFPageObj_TransformF per il contenuto, poi FPDFPage_GetAnnot + FPDFAnnot_GetRect / FPDFAnnot_SetRect per le annotazioni, poi FPDFPage_SetMediaBox / FPDFPage_SetCropBox per i box di pagina e infine FPDFPage_SetRotation con 0. La matrice è derivata dal MediaBox non ruotato restituito da FPDFPage_GetMediaBox

Parametri

Osservazioni

Esempio

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;

Vedi anche

PageRotation, TransformPageObject, SetPageBox