首页 > 编程语言 >通过C# 读取PDF页面大小、方向、旋转角度

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

时间:2024-08-31 10:25:08浏览次数:16  
标签:读取 C# iTextSharp pageNumber reader PDF 页面

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

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

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

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

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文件时,注意内存和性能问题。

标签:读取,C#,iTextSharp,pageNumber,reader,PDF,页面
From: https://blog.csdn.net/x1234w4321/article/details/141555173

相关文章

  • 第二十九节 containerd的介绍与安装
    一、containerd的介绍1、containerd介绍(1)早在2016年3月,Docker1.11的DockerEngine里就包含了containerd,而现在则是把containerd从DockerEngine里彻底剥离出来,作为一个独立的开源项目独立发展,目标是提供一个更加开放、稳定的容器运行基础设施。和原先包含在DockerEngine里con......
  • 前端必知必会-CSS 渐变Gradients(上)
    文章目录CSS渐变CSS线性渐变使用角度使用多个颜色停止点使用透明度重复线性渐变CSS径向渐变径向渐变-均匀分布的色标(这是默认设置)径向渐变-不同分布的色标设置形状使用不同的Size关键字重复径向渐变总结CSS渐变CSS渐变可让您在两种或多种指定颜色之间......
  • C++学习,指针空指针
    C++空指针,一个在几个标准库中定义的值为零的常量。如果没有分配的地址,将指针NULL分配给指针变量,指定为NULL的指针称为null指针。大多数操作系统上,不允许访问地址0的内存,因为该内存是由操作系统保留的。NULL指针是一个常量,其值为零,在几个标准库中定义,包括iostream。 示例:#i......
  • 【每日一题】【想通后的诈骗题】Wakey Wakey 牛客挑战赛76 A题 C++
    牛客挑战赛76A题WakeyWakey题目背景牛客挑战赛76题目描述样例#1样例输入#12232100001000002333样例输出#112014备注1≤T......
  • JavaScript中闭包详解+举例,闭包的各种实践场景:高级技巧与实用指南
    目录闭包的各种实践场景:高级技巧与实用指南一、什么是闭包?1、闭包的基本概念2、闭包的工作原理3、闭包的用途二、闭包的实际应用场景1、模拟私有变量2、事件处理和回调函数3、延迟函数和异步操作4、柯里化5、备忘录模式(Memoization)三、闭包的性能问题1、内存泄漏......
  • CSP-J 2020 初赛试题解析(第一部分:单项选择题(5-10))
    ......
  • 鸿蒙开发—黑马云音乐之music页面播放音乐(下)
    目录1.暂停播放和恢复播放2.上一首、下一首功能1.暂停播放和恢复播放src/main/ets/services/AvPlayerManager.ets:exportinterfacesongItemType{img:stringname:stringauthor:stringurl:stringid:string}//作用:负责管理播放对象的各种方法封装......
  • 随笔九、SARADC按键程控测试
    目录1.泰山派环境2.按键3分析3.编程测试1.泰山派环境泰山派开发板上有3个按键按键1是电源按键PWRON,实测按几下会导致开发板重启按键2是复位按键RESET,按下立马复位重启按键3是升级按键RECOVER,配合RESET按键可以使开发板进入Loader烧写模式一般来说开发板都会给......
  • 【Unity精品插件】Script Inspector 3:Unity开发者的代码优化伙伴
    ......
  • 【C++】单元测试覆盖率工具lcov的使用
    本文首发于❄️慕雪的寒舍本文讲述了如何在C++代码中使用单元测试覆盖率工具lcov,以及gcov命令的使用。版本是lcov2.0和gcov11.4.0。写在前面:lcov是我在实习期间初次接触到的工具,当时在配置的时候就遇到了大量中文互联网没有任何记录的问题。绝大部分博客对lcov工具的......