PDF中的页面方向和旋转
Curtis Chau
Updated: 2026年6月29日
处理PDF通常意味着了解页面的两个信息:其方向(纵向或横向)以及内容是否已旋转。 有两种方法可以找出这两个问题的答案,而它们解答的是稍微不同的问题。
PdfDocument.Pages[i].PageRotation从PDF元数据中读取旋转信息。OcrInput.DetectPageOrientation()使用OCR视觉推断方向。
方向 vs 旋转
这些不是同一属性:
- 页面方向: 页面布局。 纵向意意味着高度大于宽度; 横向意意味着宽度大于高度。
- **旋转角度:**内容相对于自然阅读方向的角度,例如
180等。
选项1:从元数据读取旋转
PageRotation 返回嵌入在PDF文件中的旋转值,因此它告诉您内容是如何被程序化旋转的。 对于格式良好的PDF,这是一种可靠且一致的方法。
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#
您可以通过一次读取获得两个信息:通过宽高比比较得出方向,以及从元数据中直接获取的旋转角度。
适合: 结构化且元数据一致有效的PDF。
选项2:用OCR检测方向
当元数据缺失或不可信时,可以对页面进行视觉分析。 DetectPageOrientation() 检查每一页的布局并推断可能的阅读方向,不依赖于元数据。
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#
这是处理扫描文档、基于图像的PDF以及缺乏适当元数据文件的正确选择。
这里的准确性与文本密度和清晰度相关。 稀疏或对齐不当的文本可能产生错误结果,因此将OCR限制为 Rectangle 在文本密集区域上,以稳定检测。
推荐
- **数字PDF:**当元数据正确时,优先使用
PdfDocument.PageRotation。 - **扫描或基于图像的PDF:**在元数据缺失或不可靠时,使用
OcrInput.DetectPageOrientation()。
对于关键工作流,请运行这两种方法并运用您自己的逻辑解决任何差异。 如果您看到不一致的旋转结果,请检查特定页面布局,并针对彼此验证一个方法。

技术作家
Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。
...
阅读更多