PDFium Component Docs

FlattenPageRotation Metoda

Component: TPdf  ·  Unit: PDFium
Wpisuje bieżące /Rotate każdej strony w strumień treści, pola strony i prostokąty adnotacji, po czym zeruje /Rotate na 0, dzięki czemu układ wizualny jest zachowany bez polegania na podpowiedzi obrotu przy wyświetlaniu

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

Wiele narzędzi pośrednich (starsze pipeline'y drukowania, ekstraktory obrazów, preprocesory OCR, konwertery rastrowe) ignoruje wpis /Rotate strony i renderuje obrócone strony w złej orientacji. FlattenPageRotation stosuje odwrotność bieżącego obrotu do treści strony, prostokątów adnotacji i pól strony, po czym ustawia /Rotate na 0. Po wywołaniu widoczna strona jest identyczna z obróconym oryginałem, ale już nie zależy od tego, czy przeglądarka zastosuje podpowiedź obrotu

Wersja jednoargumentowa przetwarza każdą stronę; wersja z PageNumbers przyjmuje tablicę indeksowaną od zera, więc wywołujący może spłaszczyć podzbiór stron. Strony już ustawione na /Rotate=0 są liczone w Report.SkippedPageCount i pozostawione bez zmian

Wewnętrznie każda obrócona strona przechodzi przez FPDFPage_CountObjects + FPDFPage_GetObject + FPDFPageObj_TransformF dla treści, następnie FPDFPage_GetAnnot + FPDFAnnot_GetRect / FPDFAnnot_SetRect dla adnotacji, dalej FPDFPage_SetMediaBox / FPDFPage_SetCropBox dla pól strony, a na końcu FPDFPage_SetRotation z wartością 0. Macierz jest wyprowadzana z nieobróconego MediaBox zwróconego przez FPDFPage_GetMediaBox

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