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

server/2024/9/23 10:19:49/

在处理PDF文件时,了解页面的大小、方向和旋转角度等信息对于PDF的显示、打印和布局设计至关重要。本文将介绍如何使用免费.NET 库通过C#来读取PDF页面的这些属性。

文章目录

    • C# 读取PDF页面大小(宽度、高度)
    • C# 判断PDF页面方向
    • C# 检测PDF页面旋转角度

免费库 Free Spire.PDF for .NET 提供了接口来获取PDF页面信息,我们可以从官网下载产品包后手动添加引用,或者直接通过NuGet安装。

PM> Install-Package FreeSpire.PDF

输入文档如图:
PDF页面

C# 读取PDF页面大小(宽度、高度)

免费Spire.PDF提供了 PdfPageBase.Size.WidthPdfPageBase.Size.Height 属性来获取指定PDF页面的宽度和高度。
获取到的值默认单位为磅(point),如果想要将其转换为厘米、毫米等常见单位,可以通过 PdfUnitConvertor 类的 ConvertUnits(float value, PdfGraphicsUnit from, PdfGraphicsUnit to) 方法进行转换。

示例代码如下:

using System;
using System.Text;
using Spire.Pdf;
using Spire.Pdf.Graphics;namespace GetPDFPageSize
{class Program{static void Main(string[] args){//加载PDF文件PdfDocument pdf = new PdfDocument();pdf.LoadFromFile("示例.pdf");//获取第一页PdfPageBase page = pdf.Pages[0];//获取页面宽度和高度(默认单位为point)float pointWidth = page.Size.Width;float pointHeight = page.Size.Height;//创建PdfUnitConvertor对象用于转换单位PdfUnitConvertor unitCvtr = new PdfUnitConvertor();//将单位从磅(point)转换为厘米float centimeterWidth = unitCvtr.ConvertUnits(pointWidth, PdfGraphicsUnit.Point, PdfGraphicsUnit.Centimeter);float centimeterHeight = unitCvtr.ConvertUnits(pointHeight, PdfGraphicsUnit.Point, PdfGraphicsUnit.Centimeter);//将单位从磅(point)转换为毫米float millimeterWidth = unitCvtr.ConvertUnits(pointWidth, PdfGraphicsUnit.Point, PdfGraphicsUnit.Millimeter);float millimeterHeight = unitCvtr.ConvertUnits(pointHeight, PdfGraphicsUnit.Point, PdfGraphicsUnit.Millimeter);//输出PDF页面宽高度信息Console.WriteLine("该PDF页面大小为(以磅为单位): 宽度 " + pointWidth + "pt, 高度 " + pointHeight + "pt");Console.WriteLine("该PDF页面大小为(以厘米为单位): 宽度 " + centimeterWidth + "cm, 高度 " + centimeterHeight + "cm");Console.WriteLine("该PDF页面大小为(以毫米为单位): 宽度 " + millimeterWidth + "mm, 高度 " + millimeterHeight + "mm");}}
}

输出结果:
读取PDF页面宽、高

C# 判断PDF页面方向

页面的方向通常以横向或纵向表示。要判断指定PDF页面的方向:

  1. 先获取页面宽度和高度
  2. 再比较这两个值。(如果宽度大于高度,则页面方向为横向,反之则为纵向。)

示例代码如下:

using Spire.Pdf;
using System;namespace GetPDFPageOrientation
{class Program{static void Main(string[] args){//加载PDF文档PdfDocument pdf = new PdfDocument();pdf.LoadFromFile("示例.pdf");//获取第一页PdfPageBase page = pdf.Pages[0];//获取页面宽度和高度float width = page.Size.Width;float height = page.Size.Height;//通过比较页面宽度和高度来判断页面方向if (width > height){Console.WriteLine("当前页面方向为横向。");}else{Console.WriteLine("当前页面方向为纵向。");}}}
}

输出结果:
判断页面方向

C# 检测PDF页面旋转角度

使用 PdfPageBase.Rotation 可以获取指定PDF页面的旋转角度。如果为 0,则表示页面保持原来的方向。

示例代码如下:

using Spire.Pdf;
using System;namespace GetPDFPageOrientation
{class Program{static void Main(string[] args){//加载PDF文档PdfDocument pdf = new PdfDocument();pdf.LoadFromFile("示例.pdf");//获取第一页PdfPageBase page = pdf.Pages[0];//获取页面的旋转角度并输出结果PdfPageRotateAngle rotationAngle = page.Rotation;string rotation = rotationAngle.ToString();Console.WriteLine("当前页面旋转角度为: " + rotation);}}
}

输出结果:
检测页面旋转


– 如有任何疑问,可前往论坛交流。


http://www.ppmy.cn/server/108384.html

相关文章

EasyCVR视频汇聚平台:巧妙解决WebRTC无法播放H.265视频的难题

随着科技的飞速发展,视频监控已经成为现代安全管理不可或缺的一部分,广泛应用于智慧工地、智慧煤矿、智慧工厂、智慧社区和智慧校园等多个领域。在这个过程中,视频编码技术和实时通信技术显得尤为重要。EasyCVR视频汇聚平台,凭借其…

OHIF Viewers 本地运行

版本要求: "node": ">18", "npm": ">6", "yarn": ">1.20.0" Node.js 需要18版本以上,但是我用的是最新版本 具体步骤 第一步:先从github里面下载出源码 第二步&am…

【Leetcode 2206 】 将数组划分成相等数对 —— 哈希表与数组模拟哈希表

给你一个整数数组 nums ,它包含 2 * n 个整数。 你需要将 nums 划分成 n 个数对,满足: 每个元素 只属于一个 数对。同一数对中的元素 相等 。 如果可以将 nums 划分成 n 个数对,请你返回 true ,否则返回 false 。 …

分享8个Python自动化实战脚本!

1. Python自动化实战脚本 1.1 网络自动化 网络上有丰富的信息资源,Python可以帮我们自动化获取这些信息。 爬虫简介:爬虫是一种自动提取网页信息的程序。Python有许多优秀的爬虫库,如requests和BeautifulSoup。 案例:使用Pytho…

力扣题解(加油站)

134. 加油站 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 …

Day51 | 117. 软件构建(拓扑排序)47. 参加科学大会 dijkstra(朴素版)

语言 117. 软件构建 117. 软件构建 题目 题目描述 某个大型软件项目的构建系统拥有 N 个文件,文件编号从 0 到 N - 1,在这些文件中,某些文件依赖于其他文件的内容,这意味着如果文件 A 依赖于文件 B,则必须在处理…

远程教学必备神器:热门远程控制软件大盘点

不知道你有没有过,需要远程帮小伙伴处理电脑或者手机问题的时候,很多时候直接语言口述,不一定能解决当下的问题。我往往是使用远程控制工具直接实操加语音,让对方能够更快地走出困境,这次我就分享几款我常用的远程控制…

如何在知行之桥上通过业务单号查找原始报文?

在知行之桥中接收或发送的数据通常是EDI原始报文,知行之桥会对EDI原始报文进行格式转换,以方便用户后端系统的处理。因此,一般情况下,用户看到的都是转换后的数据结构,例如Json、XML或Excel等,无需直接查看…