在某些平台上传或提交 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 属性进行设置。具体步骤如下:
- 创建一个
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.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版本内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论