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

devtools/2024/9/24 1:32:37/

在处理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/devtools/99711.html

相关文章

网络层 I(网络层的功能)【★★★★★★】

(★★)代表非常重要的知识点,(★)代表重要的知识点。 一、 路由与转发(★★) 路由器主要完成两个功能: 1. 路由选择 【(确定哪一条路径)根据路由选择协议构…

c++链表(list)

前言 链表作为一个常见的数据结构,在高频插入删除的场景下有独特的优势,在内存的使用上也极少有浪费可以按需申请。今天我们就来简单的学习一下这种数据结构,链表也有很多不同的实现,我们这里和标准库保持一致,实现带…

[JAVA] 什么是Java线程同步机制?

在单线程程序中,每次只能做一件事情,后面的事情需要等待前面的事情完成后才可以进行,如果使用多线程程序,就会发生两个线程抢占资源的问题,所以在多线程编程中,需要防止这些资源访问的冲突,Java…

Spring 中XmlWebApplicationContext

XmlWebApplicationContext 是 Spring Framework 中的一个重要类,位于 org.springframework.web.context.support 包中。它是 AbstractRefreshableWebApplicationContext 的实现,用于在 Web 应用程序中从 XML 配置文件加载 Spring bean 定义。 主要功能 …

巡检机器人的使用方法和维护保养

在当今快速发展的工业环境中,智能巡检机器人正逐渐成为提升运维效率和安全性的重要工具。旗晟机器人凭借其核心技术团队和多年的行业经验,推出了多款高效、智能的巡检机器人,旨在帮助企业实现设备运维的智能化升级。本文将介绍旗晟巡检机器人…

VMware NET Service在虚拟机关闭后仍然占用CPU - 解决方案

问题 VMware NET Service(即vmnat.exe)在虚拟机关闭后仍然占用CPU,这是VM 17.5.0 和 VM 17.5.1 软件本身存在的Bug,此问题已在 VM 17.5.2 版本修复,下文介绍解决方案。 时间:2024年8月 解决方案 临时方…

day39.动态规划+MySQL数据库复习

一.动态规划: 198.打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定…

微服务多个模块启动,端口被占用,yml配置文件读不到

刚刚提交到gitee自己的仓库&#xff0c;拉下来还是报错&#xff0c;然后看到一个解决方法&#xff1a; <build><resources><resource><directory>src/main/java</directory><includes><include>**/*.yml</include><includ…