通过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文件时,注意内存和性能问题。
相关推荐
@Kerry~23 分钟前
phpstudy .htaccess 文件内容
java·开发语言·前端
CRMEB系统商城23 分钟前
CRMEB多商户系统(PHP)v3.3正式发布,同城配送上线[特殊字符]
java·开发语言·小程序·php
sali-tec1 小时前
C# 基于halcon的视觉工作流-章45-网格面划痕
开发语言·算法·计算机视觉·c#
一壶浊酒..1 小时前
python 爬取百度图片
开发语言·python·百度
机器视觉知识推荐、就业指导1 小时前
C语言中的预编译是什么?何时需要预编译?
c语言·开发语言
·心猿意码·1 小时前
C++智能指针解析
开发语言·c++
广龙宇1 小时前
【一起学Rust · 项目实战】使用getargs库来获取命令行参数
开发语言·python
沐知全栈开发2 小时前
HTML 颜色名
开发语言
property-2 小时前
C++中#define和const的区别
开发语言·c++
学编程的小虎2 小时前
用 Python + Vue3 打造超炫酷音乐播放器:网易云歌单爬取 + Three.js 波形可视化
开发语言·javascript·python