PDFBox:小pdf文件不能在PDFormXObject中打开



我有一个小pdf文件,Pdfbox无法打开。经过分析,PDFCloneUtility.cloneMerge((在内存和计算方面消耗极大,并且从未使用JavaHeapSpace完成或退出,虽然是32Gb ram,但图片中的转换不是问题,而且速度非常快。

我的PDF有什么特别或不好的地方?PDF文件

PDDocument pdDocument = PDDocument.load(imported);
new LayerUtility(pdDocument).importPageAsForm(pdDocument, 0);

事实上,importPageAsForm似乎没有针对相同的源文档和目标文档进行完全测试。

在当前的情况下,PDF具有OCG(可选的内容组,在一些GUI中也称为层(,因此LayerUtility尝试将OCG从源导入到目标,即导入到自身。

不幸的是,这是下面使用的PDFCloneUtility所没有预料到的,在cloneMerge中,会陷入一个永无止境的循环

COSArray array = (COSArray) base;
for (int i = 0; i < array.size(); i++)
{
((COSArray) target).add(cloneForNewDocument(array.get(i)));
}

其中basearraytarget指向相同的COSArray

如果扩展cloneMerge顶部的检查

if( base == null )
{
return;
}

if( base == null || base == target )
{
return;
}

防止了无休止的循环。

然而,人们必须检查这是否有不必要的副作用。

最新更新