Orientation et rotation de page dans les PDFs

This article was translated from English: Does it need improvement?
Translated
View the article in English

Travailler avec des PDFs signifie souvent connaître deux choses sur une page : son orientation (portrait ou paysage) et si le contenu est tourné. Il existe deux façons de le découvrir, et elles répondent à des questions légèrement différentes.

  • PdfDocument.Pages[i].PageRotation lit la rotation à partir des métadonnées du PDF.
  • OcrInput.DetectPageOrientation() déduit l'orientation visuellement avec OCR.

Orientation vs. Rotation

Ce ne sont pas la même propriété :

  • Orientation de la page : la mise en page. Portrait signifie que la hauteur est supérieure à la largeur ; Paysage signifie que la largeur est supérieure à la hauteur.
  • Angle de rotation : comment le contenu est positionné par rapport à la direction de lecture naturelle, par exemple 90, 180, etc.

Option 1 : Lire la rotation à partir des métadonnées

PageRotation renvoie la valeur de rotation intégrée dans le fichier PDF, vous indiquant ainsi comment le contenu est programmé pour être tourné. Pour les PDFs bien formés, c'est fiable et cohérent.

var pdf = PdfDocument.FromFile("sample.pdf");
for (int i = 0; i < pdf.PageCount; i++)
{
    var page = pdf.Pages[i];
    var orientation = page.Width > page.Height ? "Landscape" : "Portrait";
    var rotation = page.PageRotation;
    Console.WriteLine($"Page {i + 1}: {orientation}, Rotation: {rotation} degrees");
}
var pdf = PdfDocument.FromFile("sample.pdf");
for (int i = 0; i < pdf.PageCount; i++)
{
    var page = pdf.Pages[i];
    var orientation = page.Width > page.Height ? "Landscape" : "Portrait";
    var rotation = page.PageRotation;
    Console.WriteLine($"Page {i + 1}: {orientation}, Rotation: {rotation} degrees");
}
Imports System

Dim pdf = PdfDocument.FromFile("sample.pdf")
For i As Integer = 0 To pdf.PageCount - 1
    Dim page = pdf.Pages(i)
    Dim orientation = If(page.Width > page.Height, "Landscape", "Portrait")
    Dim rotation = page.PageRotation
    Console.WriteLine($"Page {i + 1}: {orientation}, Rotation: {rotation} degrees")
Next
$vbLabelText   $csharpLabel

Vous obtenez les deux informations en un seul passage : l'orientation par comparaison de la largeur à la hauteur, et l'angle de rotation directement des métadonnées.

Idéal pour : PDFs structurés avec des métadonnées cohérentes et valides.

Option 2 : Détecter l'orientation avec OCR

Lorsque les métadonnées sont manquantes ou peu fiables, analysez visuellement plutôt la page. DetectPageOrientation() examine la mise en page de chaque page et déduit la direction probable de lecture, sans dépendre des métadonnées.

using var input = new OcrInput();
input.LoadPdf("sample.pdf");
var results = input.DetectPageOrientation();
foreach (var result in results)
{
    Console.WriteLine($"Page {result.PageNumber + 1}: Rotation: {result.RotationAngle} degrees");
}
using var input = new OcrInput();
input.LoadPdf("sample.pdf");
var results = input.DetectPageOrientation();
foreach (var result in results)
{
    Console.WriteLine($"Page {result.PageNumber + 1}: Rotation: {result.RotationAngle} degrees");
}
Imports System

Using input As New OcrInput()
    input.LoadPdf("sample.pdf")
    Dim results = input.DetectPageOrientation()
    For Each result In results
        Console.WriteLine($"Page {result.PageNumber + 1}: Rotation: {result.RotationAngle} degrees")
    Next
End Using
$vbLabelText   $csharpLabel

C'est le bon choix pour les documents numérisés, les PDFs basés sur des images, et tout fichier manquant de métadonnées appropriées.

Ici, l'exactitude suit la densité et la clarté du texte. Un texte clairsemé ou mal aligné peut produire un résultat erroné, donc limitez l'OCR à un Rectangle sur une région plus dense de texte pour stabiliser la détection.

Recommandation

  • PDF numériques : préférez PdfDocument.PageRotation lorsque les métadonnées sont correctes.
  • PDF numérisés ou basés sur des images : utilisez OcrInput.DetectPageOrientation() lorsque les métadonnées sont manquantes ou peu fiables.

Pour les flux de travail critiques, exécutez les deux méthodes et appliquez votre propre logique pour concilier toute divergence. Si vous voyez des résultats de rotation incohérents, vérifiez la mise en page spécifique de la page et validez une méthode par rapport à l'autre.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 6,136,090 | Version : 2026.7 vient de sortir
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package IronOcr
lancez un échantillon regardez votre image se transformer en texte consultable.