PDFium Delphi Component Docs

FlattenPageRotation metoda

Komponenta: TPdf  ·  Jednotka: PDFium
Zapeče aktuální /Rotate každé stránky do obsahového proudu, stránekových rámců a obdélníků anotací a poté resetuje /Rotate na 0, takže vizuální rozvržení zůstane zachováno bez spoléhání na rotační hint pro zobrazení

Syntaxe

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;

Popis

Mnoho downstream nástrojů (starší tiskové pipeline, extraktory obrázků, OCR preprocesory, rastrové konvertory) ignoruje stránkovou položku /Rotate a vykresluje otočené stránky ve špatné orientaci. FlattenPageRotation aplikuje inverz aktuální rotace na obsah stránky, obdélníky anotací a stránkové rámce a poté nastaví /Rotate na 0. Po volání je viditelná stránka totožná s otočeným originálem, ale už nespoléhá na to, že prohlížeč aplikuje rotační hint

Overload s jedním argumentem zpracovává každou stránku; overload s PageNumbers přijímá pole indexované od nuly, takže volající mohou zploštit podmnožinu. Stránky už na /Rotate=0 se započítají do Report.SkippedPageCount a zůstanou nedotčeny

Interně projde každá otočená stránka sekvencí FPDFPage_CountObjects + FPDFPage_GetObject + FPDFPageObj_TransformF pro obsah, poté FPDFPage_GetAnnot + FPDFAnnot_GetRect / FPDFAnnot_SetRect pro anotace, dále FPDFPage_SetMediaBox / FPDFPage_SetCropBox pro stránkové rámce a nakonec FPDFPage_SetRotation s 0. Matice se odvozuje z neotočeného MediaBoxu vráceného funkcí FPDFPage_GetMediaBox

Parametry

Poznámky

Příklad

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;

Viz také

PageRotation, TransformPageObject, SetPageBox