PDF 合并测试:性能与内容完整性

我们一直在改进 PDF 合并工具 JPedal,并希望通过测试对比其与其他工具的表现。该工具支持合并包括大文件在内的完整文档。

如何测试 PDF 合并输出

我们在示例文件上进行了对比测试,您也可以用自有文件复现。 测试中使用的方法之一是借助 Adobe Reader:若打开文件时(即使未做修改)立即弹出保存对话框,通常表明文件存在结构或有效性问题。 虽然这并非权威检测,但可作为检测输出文件问题的实用预警手段,目标是确保合并后的 PDF 能在所有标准阅读器中无缝打开,不触发修复提示。

第一项测试:大文件合并

第一个测试旨在评估各工具处理超大文件合并的能力 ------ 具体为将文件与自身合并,生成 26.5 万页的 PDF。 测试重点为性能:处理时间、内存占用及能否成功生成输出文件。

1 iText 9:合并未完成,运行 2 分钟后内存报错,占用内存达 4GB,未生成文件。

2 JPedal:稳定完成合并,耗时 5 分 20 秒,内存占用仅 1.8GB,成功生成文件,是唯一未崩溃或内存耗尽的工具。

3 PDFBox:耗时 5 分 44 秒,与 JPedal 速度接近,但同样因内存报错(占用 4.2GB)未生成文件。

4 PDFSam:速度最慢,耗时 11 分钟后因内存问题失败,内存占用 5GB,未生成文件。

第二项测试:内容完整性

第二项测试聚焦内容完整性及合并过程对内容的处理,以评估不同工具的合并质量。 测试内容:将 39 页无表单字段的文档与 1 页含多个表单字段的文档合并(共 40 页),观察各工具对表单字段的处理。

1 iText 9:文件合并成功,但部分表单字段不可见,虽有可点击区域但无响应;Adobe 提示保存文件,表明输出存在问题。

2 JPedal:文档成功合并,所有页面和表单项可见且交互正常;Adobe 提示保存,但测试中未发现外观和功能问题。

3 PDFSam:表单页合并成功,但存在特定表单需更新值才可见的问题;更新其他值时,该表单会完全消失。原始文件无此问题,且 Adobe 未提示保存,暗示字段被 Adobe Reader 判定为损坏。

4 PDFBox:页面和表单合并无明显问题,但 "打开动作" 受合并影响,生成的文档默认打开第 40 页(原文件为 1 页)。合并大文件时,此问题会导致用户难以维持上下文。

结论

在测试中,JPedal 是唯一在大规模文件合并和表单内容测试中均无重大问题的工具。其他工具虽在速度或基础合并上有优势,但存在内存错误、表单功能或文档结构问题。

我们的主页:PDF 转 HTML5、Java 图像库、Java PDF SDK - IDRsolutions

相关推荐
SimonKing8 小时前
Java汉字转拼音的四种方案,99%的开发场景都够用了!
java·后端·程序员
啊西:8 小时前
SuperMap iClient3D for WebGL与iObjects Java结合实现前端动态绘制面与体的布尔运算
java·3d·webgl
s1mple“”8 小时前
基于电商场景的Java全栈面试实录:Spring Boot+微服务+AI技术深度解析
java·spring boot·微服务·高并发·分布式架构·电商系统·ai技术
Nakkhon8 小时前
软件工程实践——个人技术博客
java·开发语言
好奇的菜鸟9 小时前
Windows 环境下使用 Docker 部署 Java 开发中间件完全指南
java·windows·docker
代码or搬砖9 小时前
== 和 equals() 的区别
java·开发语言·jvm
koping_wu9 小时前
【leetcode】排序数组:快速排序、堆排序、归并排序
java·算法·leetcode
童园管理札记9 小时前
融传统文化于幼儿日常 育根魂少年于启蒙之时
经验分享·深度学习·创业创新·学习方法·微信公众平台
咘噜biu9 小时前
Java SpringBoot后端Filter包装请求(新增/覆盖请求头)
java·spring boot·filter·requestwrapper
历程里程碑9 小时前
LeetCode 283:原地移动零的优雅解法
java·c语言·开发语言·数据结构·c++·算法·leetcode