通过C# 读取PDF页面大小、方向、旋转角度

在C#中读取PDF文件的页面大小、方向以及旋转角度,可以使用第三方库,因为.NET标准库本身并不直接支持处理PDF文件。最常用的库之一是iTextSharp,它是iText的.NET版本,一个开源的库,用于创建和操作PDF文件。

以下是一个使用iTextSharp库来读取PDF页面大小、方向和旋转角度的基本示例:

首先,需要通过NuGet安装iTextSharp库。在Visual Studio中,可以通过NuGet包管理器搜索并安装itextsharp

接下来,是读取PDF页面信息的示例代码:

cs 复制代码
using System;  
using iTextSharp.text.pdf;  
using iTextSharp.text.pdf.parser;  
  
class Program  
{  
    static void Main(string[] args)  
    {  
        string pdfPath = @"path\to\your\document.pdf"; // 替换为你的PDF文件路径  
  
        PdfReader reader = new PdfReader(pdfPath);  
        int numberOfPages = reader.NumberOfPages;  
  
        for (int pageNumber = 1; pageNumber <= numberOfPages; pageNumber++)  
        {  
            Rectangle pageSize = reader.GetPageSizeWithRotation(pageNumber);  
  
            // 页面大小  
            float width = pageSize.Width;  
            float height = pageSize.Height;  
            Console.WriteLine($"Page {pageNumber} Size: Width = {width}, Height = {height}");  
  
            // 页面方向(基于宽度和高度判断,简单逻辑)  
            string orientation;  
            if (width > height)  
            {  
                orientation = "Landscape";  
            }  
            else  
            {  
                orientation = "Portrait";  
            }  
            Console.WriteLine($"Page {pageNumber} Orientation: {orientation}");  
  
            // 页面旋转角度  
            int rotation = reader.GetPageRotation(pageNumber);  
            Console.WriteLine($"Page {pageNumber} Rotation: {rotation} degrees");  
        }  
  
        reader.Close();  
    }  
}

解释

  1. PdfReader:用于读取PDF文件。
  2. GetPageSizeWithRotation :此方法返回考虑了页面旋转的页面大小(Rectangle对象)。
  3. GetPageRotation:返回指定页面的旋转角度(以度为单位)。

注意事项

  • 页面方向(orientation)是根据页面宽度和高度简单判断的,这在大多数情况下是有效的,但可能不适用于所有情况(例如,当PDF特意设置了非标准布局时)。
  • 确保安装了正确版本的iTextSharp库,因为库的API可能会随版本变化。
  • 处理大型PDF文件时,注意内存和性能问题。
相关推荐
雨落倾城夏未凉3 天前
第四章c#方法-参数数组和可选参数(16)
后端·c#
唐青枫4 天前
线程不是越多越快:C#.NET Thread 生命周期、同步与后台工作线程实战
c#·.net
唐青枫5 天前
别只会反射:C#.NET Emit 动态生成代码实战详解
c#·.net
咕白m6256 天前
.NET 环境下 Word 超链接批量提取方案
c#·.net
用户91721561902116 天前
C# 通信协议增量解析:用状态机处理半包和粘包
c#
小码编匠6 天前
C# 工控上位机必备:数据转换工具类与十个核心模块
后端·c#·.net
唐青枫8 天前
别再乱用 StartNew:C#.NET TaskFactory 任务调度实战详解
c#·.net
Artech9 天前
[MAF预定义的AIContextProvider-03]ChatHistoryMemoryProvider——赋予Agent从经验中学习的能力
ai·c#·agent·memory·maf
Scout-leaf10 天前
C#摸鱼实录——IoC与DI案例详解
c#
咕白m62510 天前
使用 C# 在 Excel 中应用多种字体样式
后端·c#