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

开始之前,您需要在 .NET 项目中添加所需的 PDF 处理组件。相关程序集可以从官方资源中下载,或通过 NuGet 包管理器进行安装。
PM> Install-Package Spire.PDF
通过 .NET PDF 处理组件,可以支持 PDF 1.0 到 PDF 1.7 版本之间的转换。若需要将 PDF 文件转换为更高或更低的版本,可以通过 PdfDocument.FileInfo.Version 属性进行设置。具体步骤如下:
PdfDocument 对象。PdfDocument.LoadFromFile() 方法加载示例 PDF 文件。PdfDocument.FileInfo.Version 属性,将 PDF 版本修改为目标版本。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.7document.FileStructure.Version = PdfVersion.Version1_7;// 保存文档document.Save("Output.pdf");// 关闭文档document.Close(true);说明:
PdfVersion 枚举包含了 Version1_0 到 Version1_7 等选项。IncrementalUpdate = false 是为了确保版本修改能正确写入文件。方案二:使用 Spire.PDF (商业库,API 简洁)
Spire.PDF 同样是一个成熟的 .NET PDF 处理库,通过 PdfDocument.FileInfo.Version 属性即可修改版本。
安装 NuGet 包:
Install-Package Spire.PDF
核心代码:
using Spire.Pdf;// 创建 PdfDocument 对象并加载 PDFPdfDocument pdf = new PdfDocument();pdf.LoadFromFile("sample.pdf");// 修改 PDF 版本为 1.7pdf.FileInfo.Version = PdfVersion.Version1_7;// 保存结果pdf.SaveToFile("PDFVersion.pdf");说明:
方案三:使用 iTextSharp (开源/商业,需注意版本限制)
iTextSharp 是 iText 的 .NET 移植版,可以修改 PDF 版本号。
核心思路:
PdfWriter 的 SetPdfVersion 方法,在写入新 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.7writer.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 标准要求的文档处理场景。