C#使用Spire.PDF for .NET实现设置或修改PDF页面尺寸

 更新时间:2026年02月06日 08:31:24   作者:m5655bj  
在文档处理场景中,调整 PDF 页面尺寸是常见需求,本文将介绍如何使用免费库 Free Spire.PDF for .NET 通过 C# 代码设置或修改 PDF 页面尺寸,有需要的小伙伴可以了解下

在文档处理场景中,调整 PDF 页面尺寸是常见需求,例如将 A4 尺寸的 PDF 适配 A3 打印纸张、为移动端显示自定义窄版页面,或统一多来源 PDF 的页面规格。本文将介绍如何使用免费库 Free Spire.PDF for .NET 通过 C# 代码设置或修改 PDF 页面尺寸。

一、安装免费 .NET 库

通过 NuGet 包管理器安装(最便捷方式):

  • 打开Visual Studio → 右键项目 → 管理NuGet程序包 → 搜索“Free Spire.PDF” → 安装。
  • 或通过NuGet命令行安装:
Install-Package FreeSpire.PDF

注:Free Spire.PDF for .NET 有10页的页数限制,仅适用于小型文档。

二、C# 如何调整 PDF 页面尺寸

本文采用 “创建新 PDF 文档 + 原页面模板绘制” 的方式调整尺寸,核心优势是通过 PdfTextLayoutOnePage 布局自动适配内容到新页面,避免直接修改尺寸导致的内容裁剪或错位。

PDF 页面尺寸的核心单位为“点(Point)”,常见尺寸换算关系:

  • 1英寸 = 72点;
  • A4(210mm×297mm)= 595.28点 × 841.89点;
  • A3(297mm×420mm)= 841.89点 × 1190.55点。

Free Spire.PDF 类库提供 PdfUnitConvertor 工具类可便捷完成英寸、毫米与点的换算。

场景 1:将现有 PDF 修改为标准预设页面尺寸(A1)

适用于将 PDF 批量调整为行业标准尺寸(如 A1、A3、Letter 等),通过 Free Spire.PDF 预设的PdfPageSize 枚举直接指定尺寸,无需手动换算单位。

using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace ChangePageSizeToStandardPaperSize
{
    class Program
    {
        static void Main(string[] args)
        {            
            // 1. 创建PdfDocument实例并加载原始PDF
            PdfDocument originPdf = new PdfDocument();
            originPdf.LoadFromFile("Sample.pdf"); // 替换为你的PDF文件路径

            // 2. 创建新的PDF文档用于存储调整尺寸后的内容
            PdfDocument newPdf = new PdfDocument();

            // 3. 遍历原始PDF的所有页面,逐页调整尺寸
            foreach(PdfPageBase page in originPdf.Pages)
            { 
                // 3.1 新增A1尺寸的页面(设置边距为0)
                PdfPageBase newPage = newPdf.Pages.Add(PdfPageSize.A1, new PdfMargins(0));
                
                // 3.2 设置文本布局为“单页适配”,确保内容完整缩放至新页面
                PdfTextLayout layout = new PdfTextLayout();
                layout.Layout = PdfLayoutType.OnePage;
                
                // 3.3 基于原页面创建模板,将内容绘制到新尺寸页面
                PdfTemplate template = page.CreateTemplate();
                template.Draw(newPage, new PointF(0, 0), layout);
            }

            // 4. 保存调整后的PDF文件
            newPdf.SaveToFile("预设尺寸.pdf");
            
            // 5. 释放资源
            originPdf.Close();
            newPdf.Close();
        }
    }
}

代码说明

  • PdfDocument:分别实例化 “原始 PDF” 和 “新 PDF”,避免直接修改原文件导致数据丢失;
  • PdfPageSize.A1:内置标准尺寸枚举,支持 A0-A4、Letter、Legal 等常用尺寸,无需手动换算;
  • PdfTextLayout:设置 Layout = PdfLayoutType.OnePage 是核心,可让原页面内容自动缩放并完整适配新页面尺寸;
  • PdfTemplate:将原页面内容封装为模板,再绘制到新尺寸页面,是实现 “内容适配尺寸” 的关键载体。

场景2:将现有 PDF 修改为自定义页面尺寸

适用于非标准尺寸需求(如 6.5×8.5 英寸),通过 PdfUnitConvertor 完成英寸到点的自动换算,避免手动计算误差。

using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace ChangePageSizeToCustomPaperSize
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. 加载原始PDF文档
            PdfDocument originPdf = new PdfDocument();
            originPdf.LoadFromFile("Sample.pdf"); // 替换为你的PDF文件路径

            // 2. 创建新PDF文档存储调整后的内容
            PdfDocument newPdf = new PdfDocument();

            // 3. 初始化单位转换器,实现英寸→点的自动换算
            PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
            // 3.1 换算自定义尺寸:6.5英寸(宽)、8.5英寸(高)→ 点(Point)
            float width = unitCvtr.ConvertUnits(6.5f, PdfGraphicsUnit.Inch, PdfGraphicsUnit.Point);
            float height = unitCvtr.ConvertUnits(8.5f, PdfGraphicsUnit.Inch, PdfGraphicsUnit.Point);
            // 3.2 封装为SizeF对象,作为新页面的自定义尺寸
            SizeF customSize = new SizeF(width, height);

            // 4. 遍历原始PDF页面,逐页绘制到自定义尺寸页面
            foreach (PdfPageBase page in originPdf.Pages)
            {
                // 4.1 新增自定义尺寸的页面(边距设为0)
                PdfPageBase newPage = newPdf.Pages.Add(customSize, new PdfMargins(0));
                
                // 4.2 设置单页适配布局,保证内容完整缩放
                PdfTextLayout layout = new PdfTextLayout();
                layout.Layout = PdfLayoutType.OnePage;
                
                // 4.3 创建原页面模板并绘制到新页面
                PdfTemplate template = page.CreateTemplate();
                template.Draw(newPage, new PointF(0, 0), layout);
            }

            // 5. 保存自定义尺寸的PDF文件
            newPdf.SaveToFile("自定义尺寸.pdf");
            
            // 6. 释放资源
            originPdf.Close();
            newPdf.Close();
        }
    }
}

代码说明

  • PdfUnitConvertor:内置单位转换工具,支持 Inch(英寸)、Millimeter(毫米)、Point(点)、Centimeter(厘米)等单位互转;
  • ConvertUnits 方法:参数依次为 “数值、原单位、目标单位”,无需手动计算 “1 英寸 = 72 点” 的换算关系,降低出错概率;
  • SizeF:封装自定义宽高,作为 Pages.Add 方法的尺寸参数,适配任意非标准页面尺寸需求。

三、注意事项

  • 单位一致性:修改尺寸时需确保宽高单位统一(均为点),避免因单位换算错误导致尺寸偏差。
  • 内容适配PdfLayoutType.OnePage 会自动缩放内容适配新尺寸,若需保持内容原比例,无需额外调整;若需手动控制缩放比例,可结合 ScaleTransform 方法补充调整。
  • 兼容性:该类库生成的 PDF 兼容主流阅读器(Adobe Acrobat、Chrome、Edge等),但复杂PDF(含表单/批注)修改后需验证格式完整性。
  • 资源释放:使用 Close() 方法释放 PdfDocument 资源,避免因文件占用导致保存失败。

该方案无需依赖外部工具,纯代码实现 PDF 页面尺寸调整,适合 .NET 开发者集成到文档处理系统中,在中小规模 PDF 尺寸调整场景中具备较高的实用性和稳定性。

到此这篇关于C#使用Spire.PDF for .NET实现设置或修改PDF页面尺寸的文章就介绍到这了,更多相关C#设置或修改PDF页面尺寸内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#修改图片尺寸以及不改变原有图片比例

    C#修改图片尺寸以及不改变原有图片比例

    文章介绍了如何使用C#中的Bitmap类来修改图片尺寸,同时保持原有的图片比例,作者分享了自己的经验,并鼓励读者参考和使用
    2025-01-01
  • 在C#中使用Channels的完整教程

    在C#中使用Channels的完整教程

    这篇文章主要介绍了在C#中使用Channels的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • C#删除字符串中重复字符的方法

    C#删除字符串中重复字符的方法

    这篇文章主要介绍了C#删除字符串中重复字符的方法,涉及C#针对字符串的遍历及移除等操作的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-02-02
  • 详解C#设置Excel数据自适应行高、列宽的2种情况

    详解C#设置Excel数据自适应行高、列宽的2种情况

    这篇文章主要介绍了C#设置Excel数据自适应行高、列宽的2种情况,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • C#中托管DLL和非托管DLL的区别详解

    C#中托管DLL和非托管DLL的区别详解

    这篇文章主要介绍了C#中托管DLL和非托管DLL的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Unity的IPostBuildPlayerScriptDLLs实用案例深入解析

    Unity的IPostBuildPlayerScriptDLLs实用案例深入解析

    这篇文章主要为大家介绍了Unity的IPostBuildPlayerScriptDLLs实用案例深入解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • C# MemoryStream中ToArray和GetBuffer的区别小小结

    C# MemoryStream中ToArray和GetBuffer的区别小小结

    MemoryStream 中的 GetBuffer() 和 ToArray() 是两个用于获取流数据的方法,核心区别在于数据范围、内存占用和安全性,本文就来介绍一下两者的区别,感兴趣的额可以了解一下
    2025-07-07
  • WPF应用程序本地化的最佳方法分享

    WPF应用程序本地化的最佳方法分享

    应用程序本地化有很多种方式,选择合适的才是最好的,这篇文章主要为大家介绍了动态资源的方式,可以在不重启应用程序的情况下进行资源的切换,需要的可以参考下
    2023-08-08
  • C#利用WebClient实现两种方式下载文件

    C#利用WebClient实现两种方式下载文件

    本篇文章主要介绍了C#利用WebClient 两种方式下载文件,详细的介绍了两种方式,非常具有实用价值,需要的朋友可以参考下。
    2017-02-02
  • 一文弄懂C#浅克隆与深克隆

    一文弄懂C#浅克隆与深克隆

    在C#中,浅克隆和深克隆是两种常见的对象克隆技术,本文主要介绍了C#浅克隆与深克隆,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02

最新评论