C#代码轻松实现调整PDF版本

 更新时间:2026年08月05日 11:51:46   作者:2501_93070778  
在某些平台上传或提交 PDF 文件时,可能会遇到平台要求特定 PDF 版本的情况,本文将介绍如何通过编程方式实现 PDF 版本之间的转换,有需要的小伙伴可以了解下

在某些平台上传或提交 PDF 文件时,可能会遇到平台要求特定 PDF 版本的情况。如果您的 PDF 文件版本不符合要求,就需要将其转换为兼容的版本,以确保文件能够正常使用。本文将介绍如何通过编程方式实现 PDF 版本之间的转换。

安装相关组件

开始之前,您需要在 .NET 项目中添加所需的 PDF 处理组件。相关程序集可以从官方资源中下载,或通过 NuGet 包管理器进行安装。

PM> Install-Package Spire.PDF

在 C# 和 VB.NET 中更改 PDF 版本

通过 .NET PDF 处理组件,可以支持 PDF 1.0 到 PDF 1.7 版本之间的转换。若需要将 PDF 文件转换为更高或更低的版本,可以通过 PdfDocument.FileInfo.Version 属性进行设置。具体步骤如下:

  1. 创建一个 PdfDocument 对象。
  2. 使用 PdfDocument.LoadFromFile() 方法加载示例 PDF 文件。
  3. 通过 PdfDocument.FileInfo.Version 属性,将 PDF 版本修改为目标版本。
  4. 使用 PdfDocument.SaveToFile() 方法保存处理后的文档。

完整示例代码如下:

using Spire.Pdf;

namespace ConvertPDFVersion
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建一个 PdfDocument 对象
            PdfDocument pdf = new PdfDocument();

            // 加载示例 PDF 文件
            pdf.LoadFromFile("sample.pdf");

            // 将 PDF 版本更改为 1.7
            pdf.FileInfo.Version = PdfVersion.Version1_7;

            // 保存结果文件
            pdf.SaveToFile("PDFVersion.pdf");
        }
    }
}

知识扩展

在 C# 中调整 PDF 版本,本质上是修改 PDF 文件头中的版本号。市面上主流的几个 .NET PDF 库都可以实现,下面为你整理了几种方案。

方案一:使用 Syncfusion (商业库,功能全面)

Syncfusion 的 Essential PDF 是一个功能强大的 .NET PDF 库。它通过 PdfLoadedDocument.FileStructure.Version 属性来修改版本。

安装 NuGet 包

Install-Package Syncfusion.Pdf.WinForms

核心代码

using Syncfusion.Pdf;
using Syncfusion.Pdf.Parsing;

// 加载 PDF 文档
PdfLoadedDocument document = new PdfLoadedDocument("Input.pdf");

// 关闭增量更新(确保版本修改生效)
document.FileStructure.IncrementalUpdate = false;

// 设置 PDF 版本为 1.7
document.FileStructure.Version = PdfVersion.Version1_7;

// 保存文档
document.Save("Output.pdf");

// 关闭文档
document.Close(true);

说明

  • PdfVersion 枚举包含了 Version1_0 到 Version1_7 等选项。
  • 设置 IncrementalUpdate = false 是为了确保版本修改能正确写入文件。
  • Syncfusion 提供 30 天免费试用,商业使用需授权。

方案二:使用 Spire.PDF (商业库,API 简洁)

Spire.PDF 同样是一个成熟的 .NET PDF 处理库,通过 PdfDocument.FileInfo.Version 属性即可修改版本。

安装 NuGet 包

Install-Package Spire.PDF

核心代码

using Spire.Pdf;

// 创建 PdfDocument 对象并加载 PDF
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("sample.pdf");

// 修改 PDF 版本为 1.7
pdf.FileInfo.Version = PdfVersion.Version1_7;

// 保存结果
pdf.SaveToFile("PDFVersion.pdf");

说明

  • Spire.PDF 支持 PDF 1.0 到 1.7 的版本转换。
  • 同样提供 30 天免费试用,商业使用需授权。

方案三:使用 iTextSharp (开源/商业,需注意版本限制)

iTextSharp 是 iText 的 .NET 移植版,可以修改 PDF 版本号。

核心思路

  • 通过 PdfWriter 的 SetPdfVersion 方法,在写入新 PDF 时设置版本。
  • 对于已存在的 PDF,需要打开 → 修改 → 重新保存,不能直接原地修改。

示例代码(创建新文档时设置版本)

using iTextSharp.text;
using iTextSharp.text.pdf;

Document document = new Document();
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("output.pdf", FileMode.Create));

// 设置 PDF 版本为 1.7
writer.SetPdfVersion(PdfWriter.VERSION_1_7);

document.Open();
// ... 添加内容 ...
document.Close();

限制

1.版本只能升不能降SetPdfVersion 只有在设置的版本高于当前版本时才生效。例如,无法将 PDF 1.7 降级为 1.4。

2.仅修改版本号:iTextSharp 只改文件头的版本数字,不会移除该版本不支持的特性。比如,把一个包含 OCG(图层,PDF 1.5 特性)的 PDF 版本号改成 1.4,并不会删除这些图层。

方案四:使用 Aspose.PDF (商业库)

Aspose.PDF 也提供了设置 PDF 版本的功能。

核心方法:通过 PdfPackage.SetPdfVersion 方法设置版本。

// 参考用法(需结合实际 API)
// PdfPackage.SetPdfVersion("1.7");

说明:Aspose.PDF 功能非常全面,适合企业级应用,商业使用需授权。

方案五:PdfPig (开源免费,仅支持读取)

PdfPig 是一个开源免费的 PDF 处理库,可以读取 PDF 版本。

using UglyToad.PdfPig;
decimal version = document.Version;  // 读取版本号

限制:PdfPig 目前不支持修改或写入 PDF 版本。如果只需要读取版本号,这是个免费的选择。

总结

通过以上步骤,可以使用 .NET PDF 处理工具轻松修改 PDF 文件的版本。只需加载目标 PDF 文档,并通过 PdfDocument.FileInfo.Version 属性设置所需版本,即可将 PDF 转换为更高或更低的版本。该方法操作简单,适用于需要调整 PDF 兼容性或满足不同 PDF 标准要求的文档处理场景。

到此这篇关于C#代码轻松实现调整PDF版本的文章就介绍到这了,更多相关C#调整PDF版本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#删除整个目录及子目录的方法

    C#删除整个目录及子目录的方法

    这篇文章主要介绍了C#删除整个目录及子目录的方法,涉及C#操作目录删除的相关技巧,需要的朋友可以参考下
    2015-04-04
  • C#中的is和as操作符区别小结

    C#中的is和as操作符区别小结

    这篇文章主要介绍了C#中的is和as操作符区别小结,is是验证操作对象是不是自己希望的,as是将对象转换成指定类型,需要的朋友可以参考下
    2015-01-01
  • C#设计模式之观察者模式实例讲解

    C#设计模式之观察者模式实例讲解

    这篇文章主要介绍了C#设计模式之观察者模式实例讲解,本文详细讲解了观察者模式的定义、优缺点、代码实例等,需要的朋友可以参考下
    2014-10-10
  • C# FileStream实现多线程断点续传

    C# FileStream实现多线程断点续传

    这篇文章主要为大家详细介绍了C# FileStream实现多线程断点续传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • C#转换日期类型实例

    C#转换日期类型实例

    这篇文章主要介绍了C#转换日期类型的方法,以实例形式分析了将日期格式转换为Unix时间戳与时区结合的形式,是比较实用的技巧,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • 利用WPF窗口程序设计简单计算器

    利用WPF窗口程序设计简单计算器

    这篇文章主要为大家详细介绍了利用WPF窗口程序设计简单计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • DevExpress之ChartControl实现时间轴实例

    DevExpress之ChartControl实现时间轴实例

    这篇文章主要介绍了DevExpress中ChartControl实现时间轴的方法,涉及相关C#绘图程序用法,具有一定的实用价值,需要的朋友可以参考下
    2014-10-10
  • c#装箱和拆箱知识整理

    c#装箱和拆箱知识整理

    这篇文章主要介绍了c#装箱和拆箱知识,装箱和拆箱是一个抽象的概念,需要的朋友可以参考下
    2014-03-03
  • 详解Unity日志打印工具功能

    详解Unity日志打印工具功能

    Unity是一个非常火的游戏引擎,我们再开发的时候有的时候要进行程序的调试,下面给大家介绍下Unity日志打印工具功能,感兴趣的朋友一起看看吧
    2022-01-01
  • C#如何将DLL打包到程序中

    C#如何将DLL打包到程序中

    这篇文章主要介绍了C#如何将DLL打包到程序中问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01

最新评论