PDFium Delphi Component Docs

FlattenPageRotation Méthode

Composant: TPdf  ·  Unit: PDFium
Incorpore le /Rotate courant de chaque page dans le flux de contenu, les boîtes de page et les rectangles d’annotations, puis ramène /Rotate à 0 afin que la mise en page visuelle soit préservée sans dépendre de l’indication de rotation à l’affichage

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

Nombreux outils en aval (anciennes chaînes d’impression, extracteurs d’images, préprocesseurs OCR, convertisseurs matriciels) ignorent l’entrée de page /Rotate et rendent les pages pivotées dans une mauvaise orientation. FlattenPageRotation applique l’inverse de la rotation courante au contenu de la page, aux rectangles d’annotations et aux boîtes de page, puis définit /Rotate à 0. Après l’appel, la page visible est identique à l’original pivoté, mais ne dépend plus de l’application de l’indication de rotation par le visualiseur

La surcharge à un argument traite toutes les pages ; la surcharge PageNumbers accepte un tableau à base zéro afin que les appelants puissent aplatir un sous-ensemble. Les pages déjà en /Rotate=0 sont comptées dans Report.SkippedPageCount et laissées intactes

En interne, chaque page pivotée passe par FPDFPage_CountObjects + FPDFPage_GetObject + FPDFPageObj_TransformF pour le contenu, puis FPDFPage_GetAnnot + FPDFAnnot_GetRect / FPDFAnnot_SetRect pour les annotations, puis FPDFPage_SetMediaBox / FPDFPage_SetCropBox pour les boîtes de page, et enfin FPDFPage_SetRotation avec 0. La matrice est dérivée du MediaBox non pivoté renvoyé par 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