Seitenorientierung und -rotation in PDFs
Beim Arbeiten mit PDFs bedeutet dies oft, zwei Dinge über eine Seite zu wissen: ihre Orientierung (Hoch- oder Querformat) und ob der Inhalt gedreht ist. Es gibt zwei Möglichkeiten, dies herauszufinden, und sie beantworten leicht unterschiedliche Fragen.
PdfDocument.Pages[i].PageRotationliest die Drehung aus den PDF-Metadaten.OcrInput.DetectPageOrientation()erkennt die Ausrichtung visuell mit OCR.
Orientierung vs. Drehung
Diese sind nicht dieselbe Eigenschaft:
- Seitenorientierung: das Seitenlayout. Hochformat bedeutet, dass die Höhe größer als die Breite ist; Querformat bedeutet, dass die Breite größer als die Höhe ist.
- Drehwinkel: wie der Inhalt im Vergleich zur natürlichen Lesedirection steht, z.B.
90,180, usw.
Option 1: Rotation aus Metadaten lesen
PageRotation gibt den im PDF eingebetteten Drehwert zurück und zeigt damit, wie der Inhalt programmgesteuert gedreht wird. Für gut formierte PDFs ist dies zuverlässig und konsistent.
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
Sie erhalten beide Fakten in einem Durchgang: Orientierung durch den Breiten-Höhen-Vergleich und den Rotationswinkel direkt aus den Metadaten.
Am besten geeignet für: Strukturierte PDFs mit konsistenten, gültigen Metadaten.
Option 2: Orientierung mit OCR erkennen
Wenn die Metadaten fehlen oder nicht vertrauenswürdig sind, analysieren Sie die Seite stattdessen visuell. DetectPageOrientation() untersucht das Layout jeder Seite und ermittelt die wahrscheinlichste Lesedirection, ohne sich auf Metadaten zu verlassen.
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
Dies ist die richtige Wahl für gescannte Dokumente, bildbasierte PDFs und jede Datei, die richtige Metadaten fehlt.
Die Genauigkeit hierbei verfolgt Texterdichte und Klarheit. Sparsamer oder falsch ausgerichteter Text kann ein falsches Ergebnis erzeugen. Daher beschränken Sie OCR auf einen Rectangle über eine dichtere Textregion, um die Erkennung zu stabilisieren.
Empfehlung
- Digitale PDFs: bevorzugen Sie
PdfDocument.PageRotation, wenn die Metadaten korrekt sind. - Gescannt oder bildbasierte PDFs: verwenden Sie
OcrInput.DetectPageOrientation(), wenn Metadaten fehlen oder unzuverlässig sind.
Für kritische Workflows führen Sie beide Methoden aus und wenden Ihre eigene Logik an, um etwaige Diskrepanzen auszugleichen. Wenn Sie inkonsistente Rotationsanziegen sehen, überprüfen Sie das spezifische Seitenlayout und validieren Sie eine Methode gegen die andere.

