C# 获取PDF页面大小、方向、旋转角度

news/2024/9/20 13:54:51/文章来源:https://www.cnblogs.com/Yesi/p/18381121

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

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


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

PM> Install-Package FreeSpire.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");}}
}

 

输出结果:

 

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.hqwc.cn/news/787557.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uni-app小程序(快手、抖音)getCurrentPages使用坑位记录

前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,公司项目就是主推uni-app。 坑位 最近在做一个需求,在达到一定条件的情况下我需要根据路由堆栈中是否有我指定的页面来做不同的跳转,如果路由…

WPF 路由事件2

1什么是路由事件 简单说,路由事件可以沿着视觉树VisualTree进行传递,在这视觉树中的所有对象都可以收到这个事件。前提是添加了检测。 1.1什么是逻辑树LogicalTree 简单理解:逻辑树就是我们在xaml中写的布局逻辑 如xaml代码:<Grid><StackPanel Orientation="…

算法与数据结构——栈

栈 栈(stack)是一种遵循先入后出逻辑的线性数据结构。如图所示,我们将堆叠元素的顶部称为“栈顶”,底部称为“栈底”。将吧元素添加到栈顶的操作叫做“入栈”,删除栈顶的操作叫做“出栈”。 栈的常用操作方法 描述 时间复杂度push() 元素入栈(添加至栈顶) O(1)pop() 栈顶…

LuCI Themes

OpenWrt 2020BootstrapBootstrap LightBootstrap DarkMaterialOpenWrt

指挥网络

树形图的定义:没有环,每个点(除了根节点)的入度都是\(1\),根节点的入度为\(0\) 朱刘算法的过程见OI-wiki;当没有环的时候,就满足了树形图的定义,于是可以结束;否则的话就将所有环缩点(注意此时由于每个点的入度都是\(1\),所以不可能存在两个环有公共点和公共边)得到…

处理异常

2、.map 没用用吗1、pdb、看完后 反汇编

CSS处理font-weight不生效问题

如何解决 Android 系统中文字体字重问题 翻找了几天资料,发现Noto Sans SC字体能支持中文/数字/英文字体 100,300,400,500,700,900 的字重,具体如下图所示:<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Sans+SC:300,400,…

处理font-weight不生效问题

如何解决 Android 系统中文字体字重问题 翻找了几天资料,发现Noto Sans SC字体能支持中文/数字/英文字体 100,300,400,500,700,900 的字重,具体如下图所示:<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Sans+SC:300,400,…

Kubernetes API资源规范

1. 资源类型和资源对象 1.1 资源类型 (Resource Types) 1.1.1 核心资源类型Kubernetes API Primitive用于描述在Kubernetes上运行应用程序的基本组件,即俗称的Kubernetes对象(Object) 它们持久存储于API Server上,用于描述集群的状态依据资源的主要功能作为分类标准,Kuber…

一本通信奥解题: 1251:仙岛求药

1251:仙岛求药 时间限制: 1000 ms 内存限制: 65536 KB提交数:31087 通过数: 13638 【题目描述】少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶。叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处…

TwinCAT3 - 实现CiA402

目录1,起缘2,想办法3,开搞3.1,CANOpen通信3.1.1 对象字典3.1.2 通信建立3.2,CiA402伺服状态机3.3,伺服运行3.3.1 操作模式3.3.2 轮廓位置模式3.3.3 轮廓速度模式3.3.4 其他4,用起来 1,起缘 在TwinCAT3项目中涉及到轴运动时,通常做法都是在PLC中安装TC1250或者TF5000,…

地理:美国各州首府系列

America1.botson文化重镇波士顿 2.annapolis 3.弗吉尼亚州首府里士满 4.罗得岛州的普罗维登斯 5.加利福尼亚州的萨克拉门托 6.纽约州奥尔巴尼市 7.阿拉巴马州蒙哥马利市 8.alascap 9.arizona 10.little阿肯色州首府小石城 11.康涅狄格州哈特福德市 12.特拉华州多佛市 13.印第安…