# Orientación y rotación de páginas en PDFs
Trabajar con PDFs a menudo significa conocer dos cosas sobre una página: su orientación (vertical u horizontal) y si el contenido está girado. Hay dos maneras de averiguarlo, y responden preguntas ligeramente diferentes.
- `PdfDocument.Pages[i].PageRotation` lee la rotación desde los metadatos del PDF.
- `OcrInput.DetectPageOrientation()` infiere la orientación visualmente con OCR.
## Orientation vs. Rotation
No son la misma propiedad:
- **Orientación de la página:** el diseño de la página. **Vertical** significa que la altura es mayor que el ancho; **Horizontal** significa que el ancho es mayor que la altura.
- **Ángulo de rotación:** cómo se sitúa el contenido en relación con la dirección natural de lectura, por ejemplo `90`, `180`, y así sucesivamente.
## Opción 1: Leer rotación de los metadatos
`PageRotation` devuelve el valor de rotación incrustado en el archivo PDF, entonces te indica cómo está rotado programáticamente el contenido. Para PDFs bien formados, esto es fiable y consistente.
```csharp
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");
}
```
Obtienes ambos hechos en una pasada: orientación de la comparación de ancho a altura, y el ángulo de rotación directamente desde los metadatos.
**Mejor para:** PDFs estructurados con metadatos consistentes y válidos.
## Opción 2: Detectar orientación con OCR
Cuando los metadatos están ausentes o no son fiables, analiza la página visualmente en su lugar. `DetectPageOrientation()` examina el diseño de cada página e infiere la probable dirección de lectura, sin depender de los metadatos.
```csharp
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");
}
```
Esta es la elección adecuada para documentos escaneados, PDFs basados en imágenes y cualquier archivo que carezca de metadatos adecuados.
La precisión aquí sigue la densidad y claridad del texto. El texto escaso o mal alineado puede producir un resultado incorrecto, así que restringe el OCR a un `Rectangle` sobre una región de texto más densa para estabilizar la detección.
## Recomendación
- **PDFs digitales:** prefiere `PdfDocument.PageRotation` cuando los metadatos son correctos.
- **PDFs escaneados o basados en imagen:** usa `OcrInput.DetectPageOrientation()` donde los metadatos faltan o son poco fiables.
Para flujos de trabajo críticos, ejecuta ambos métodos y aplica tu propia lógica para reconciliar cualquier discrepancia. Si estás viendo resultados de rotación inconsistentes, verifica el diseño específico de la página y valida un método contra el otro.
Trabajar con PDFs a menudo significa conocer dos cosas sobre una página: su orientación (vertical u horizontal) y si el contenido está girado. Hay dos maneras de averiguarlo, y responden preguntas ligeramente diferentes.
PdfDocument.Pages[i].PageRotation lee la rotación desde los metadatos del PDF.
OcrInput.DetectPageOrientation() infiere la orientación visualmente con OCR.
Orientation vs. Rotation
No son la misma propiedad:
Orientación de la página: el diseño de la página. Vertical significa que la altura es mayor que el ancho; Horizontal significa que el ancho es mayor que la altura.
Ángulo de rotación: cómo se sitúa el contenido en relación con la dirección natural de lectura, por ejemplo 90, 180, y así sucesivamente.
Opción 1: Leer rotación de los metadatos
PageRotation devuelve el valor de rotación incrustado en el archivo PDF, entonces te indica cómo está rotado programáticamente el contenido. Para PDFs bien formados, esto es fiable y consistente.
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");
}
C#
Obtienes ambos hechos en una pasada: orientación de la comparación de ancho a altura, y el ángulo de rotación directamente desde los metadatos.
Mejor para: PDFs estructurados con metadatos consistentes y válidos.
Opción 2: Detectar orientación con OCR
Cuando los metadatos están ausentes o no son fiables, analiza la página visualmente en su lugar. DetectPageOrientation() examina el diseño de cada página e infiere la probable dirección de lectura, sin depender de los metadatos.
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");
}
C#
Esta es la elección adecuada para documentos escaneados, PDFs basados en imágenes y cualquier archivo que carezca de metadatos adecuados.
La precisión aquí sigue la densidad y claridad del texto. El texto escaso o mal alineado puede producir un resultado incorrecto, así que restringe el OCR a un Rectangle sobre una región de texto más densa para estabilizar la detección.
Recomendación
PDFs digitales: prefiere PdfDocument.PageRotation cuando los metadatos son correctos.
PDFs escaneados o basados en imagen: usa OcrInput.DetectPageOrientation() donde los metadatos faltan o son poco fiables.
Para flujos de trabajo críticos, ejecuta ambos métodos y aplica tu propia lógica para reconciliar cualquier discrepancia. Si estás viendo resultados de rotación inconsistentes, verifica el diseño específico de la página y valida un método contra el otro.
Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien estructurados y visualmente atractivos.