PDFium Delphi Component Docs

FlattenPageRotation metod

Component: TPdf  ·  Unit: PDFium
Bakar in varje sidas aktuella /Rotate i innehållsströmmen, sidrutorna och annoteringsrektanglarna och nollställer sedan /Rotate till 0 så att den visuella layouten bevaras utan att förlita sig på rotationstipset

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

Många efterföljande verktyg (äldre utskriftspipelines, bildextraktorer, OCR-förbehandlare, rasterkonverterare) ignorerar sidposten /Rotate och renderar roterade sidor i fel orientering. FlattenPageRotation tillämpar inversen av den aktuella rotationen på sidinnehållet, annoteringsrektanglarna och sidrutorna och sätter sedan /Rotate till 0. Efter anropet är den synliga sidan identisk med den roterade originalsidan, men den förlitar sig inte längre på att visaren tillämpar rotationstipset

Overloaden med ett argument bearbetar alla sidor; PageNumbers-overloaden tar en nollbaserad array så att anroparen kan baka in rotationen för en delmängd. Sidor som redan har /Rotate=0 räknas i Report.SkippedPageCount och lämnas orörda

Internt körs varje roterad sida genom FPDFPage_CountObjects + FPDFPage_GetObject + FPDFPageObj_TransformF för innehållet, sedan FPDFPage_GetAnnot + FPDFAnnot_GetRect / FPDFAnnot_SetRect för annoteringarna, därefter FPDFPage_SetMediaBox / FPDFPage_SetCropBox för sidrutorna och till sist FPDFPage_SetRotation med 0. Matrisen härleds från den oroterade MediaBox som FPDFPage_GetMediaBox returnerar

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