PDFium Delphi Component Docs

FlattenPageRotation metode

Komponent: TPdf  ·  Enhed: PDFium
Bager hver sides aktuelle /Rotate ind i content streamen, sideboksene og annotationsrektanglerne og nulstiller derefter /Rotate til 0, så det visuelle layout bevares uden at stole på rotationsvisningshintet

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

Mange downstream-værktøjer (ældre print-pipelines, billedekstraktorer, OCR-forprocessorer, rasterkonvertere) ignorerer side-entries /Rotate og renderer roterede sider i forkert orientering. FlattenPageRotation anvender det inverse af den aktuelle rotation på sideindholdet, annotationsrektanglerne og sideboksene og sætter derefter /Rotate til 0. Efter kaldet er den synlige side identisk med det roterede original, men stoler ikke længere på, at fremviseren anvender rotationshintet

Overloaden med ét argument behandler hver side; overloaden med PageNumbers tager et nulbaseret array, så kaldere kan fladteste et udvalg. Sider, der allerede har /Rotate=0, tælles i Report.SkippedPageCount og efterlades urørt

Internt kører hver roteret side gennem FPDFPage_CountObjects + FPDFPage_GetObject + FPDFPageObj_TransformF for indholdet, derefter FPDFPage_GetAnnot + FPDFAnnot_GetRect / FPDFAnnot_SetRect for annoteringerne, derefter FPDFPage_SetMediaBox / FPDFPage_SetCropBox for sideboksene og til sidst FPDFPage_SetRotation med 0. Matricen udledes af den urotaterede MediaBox, som FPDFPage_GetMediaBox returnerer

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