PDFium Component Docs

FlattenPageRotation methode

Component: TPdf  ·  Unit: PDFium
Bakt de huidige /Rotate van elke pagina in de contentstream, de page boxes en de annotatierechthoeken en zet daarna /Rotate terug op 0, zodat de visuele layout behouden blijft zonder op de rotatie-displayhint te vertrouwen

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

Veel downstream-tools (oudere print-pipelines, image-extractors, OCR-voorverwerkers, rasterconverters) negeren de /Rotate- pagina-entry en renderen gedraaide pagina's in de verkeerde oriëntatie. FlattenPageRotation past de inverse van de huidige rotatie toe op de paginacontent, de annotatierechthoeken en de page boxes en zet daarna /Rotate op 0. Na de aanroep is de zichtbare pagina identiek aan het gedraaide origineel, maar niet langer afhankelijk van een viewer die de rotatiehint toepast

De overload met één argument verwerkt elke pagina; de PageNumbers-overload accepteert een op nul gebaseerde array zodat aanroepers een subset kunnen afvlakken. Pagina's die al op /Rotate=0 staan worden geteld in Report.SkippedPageCount en ongemoeid gelaten

Intern doorloopt elke gedraaide pagina FPDFPage_CountObjects + FPDFPage_GetObject + FPDFPageObj_TransformF voor de content, daarna FPDFPage_GetAnnot + FPDFAnnot_GetRect / FPDFAnnot_SetRect voor annotaties, daarna FPDFPage_SetMediaBox / FPDFPage_SetCropBox voor de page boxes en tenslotte FPDFPage_SetRotation met 0. De matrix wordt afgeleid uit de niet-gedraaide MediaBox die FPDFPage_GetMediaBox teruggeeft

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