通过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文件时,注意内存和性能问题。
相关推荐
XiYang-DING12 分钟前
【Java SE】包装类(Wrapper Class)
java·开发语言
麦兜顶当当14 分钟前
subprocess与子进程交互
java·开发语言·jvm
Ulyanov19 分钟前
基于Tkinter/ttk的现代化Python GUI开发全攻略:从布局设计到视觉美化(三)
开发语言·python·gui·tkinter·ttk
hutengyi25 分钟前
go测试问题记录
开发语言·后端·golang
yivifu25 分钟前
完美的PyMuPDF删除pdf页面文字水印
python·pdf·pymupdf·去水印
weixin_4331793329 分钟前
python - 读写文件
开发语言·python
東雪木36 分钟前
java学习—— 8 种基本数据类型 vs 包装类、自动装箱 / 拆箱底层原理
java·开发语言·java面试
Lyyaoo.37 分钟前
【JAVA基础面经】JVM、JRE、JDK
java·开发语言·jvm
liulilittle39 分钟前
SQLite3增删改查(C
c语言·开发语言·数据库·c++·sqlite
左左右右左右摇晃40 分钟前
ConcurrentHashMap 设计原理笔记
java·开发语言·笔记