删除PDF / A上的XMP元数据

时间:2015-07-21 02:43:43

标签: java pdf

有没有办法在不删除PDF / A标准化的情况下删除PDF / A文档上的XMP元数据?

我发现使用

PdfReader reader = new PdfReader(src);
PdfDictionary dict = reader.getCatalog();
dict.remove(PdfName.METADATA);
dict.remove(PdfName.PROPERTIES);
reader.removeUnusedObjects();

删除XMP和PDF / A.有没有办法在保留标准的同时删除XMP或将PDF / A重新引入已处理的文档?

感谢。

1 个答案:

答案 0 :(得分:1)

您无法删除PDF / A文档中的XMP信息;正如您所发现的那样,它会自动将其作为PDF / A无效。但是,您需要在XMP容器中保留的信息量很少。

本技术说明中对此进行了描述: http://www.pdfa.org/publication/technical-note-tn0003-metadata-in-pdfa-1/

基本上,它归结为您需要保留PDF / A标识和一致性级别;其他一切都可以丢弃。因为我们正在谈论XMP,所以您有很多可能性。一种是通过PDF库并以这种方式处理它。但第二种也是最快最简单的方法是使用支持在PDF中读/写XMP的库,只需将文件中的XMP数据包替换为仅包含所需信息的数据包即可。

如果您正确地执行此操作(不会损害PDF文件),这不应使PDF或其PDF / A合规性状态无效(尽管我肯定会建议使用以下方法正确测试生成的PDF文件PDF /一个验证器,确保您在生产工作流程中使用它之前就已经完成了。)

虽然有一点需要注意,但在上面提到的技术说明中也有提及。

  

PDF / A-1不要求符合条件的文件包含任何条目   在文档信息字典中。然而,无论何时   PDF 1.4参考中指定的那些信息条目(除了   存在陷阱条目),必须有相应的条目   文档的元数据,两者都必须根据   PDF / A-1的规定。

所以......如果您的文档包含文档属性,您必须删除它们或在XMP数据包中匹配它们。