在某些平台上传或提交 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 标准要求的文档处理场景。
deepin20怎么新增字体? deepin20安装字体的教程
Linux如何给文件权限? linux给文件添加可执行权限的技巧
deepin20桌面图标样式怎么修改? deepin更换图标主题的技巧
virtualbox打不开虚拟机怎么办? linux无法访问virtualbox的解决办法
deepin怎么注销系统? deepin系统注销与切换用户的方法
Manjaro linux怎么调鼠标速度? Manjaro鼠标设置光标速度的技巧