Seitenorientierung und -rotation in PDFs

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

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].PageRotation liest 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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 6,136,090 | Version: 2026.7 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronOcr
Führen Sie ein Beispiel aus und beobachten Sie, wie Ihr Bild zu durchsuchbarem Text wird.