java - 删除 PDF/A 上的 XMP 元数据

标签 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 重新引入处理的文档中?

谢谢。

最佳答案

您无法删除 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/A validator 正确测试生成的 PDF 文件,以确保确保您在生产工作流程中使用它之前就已经这样做了)。

不过有一个警告,上面提到的技术说明中也提到了这一点。

PDF/A-1 does not require a conforming document to contain any entries in the document information dictionary at all. Nevertheless, whenever those Info en- tries specified in the PDF 1.4 reference (except for the Trapped entry) are present, there must be an equivalent entry in the document’s Metadata, and both must match according to the provisions of PDF/A-1.

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

关于java - 删除 PDF/A 上的 XMP 元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31529496/

相关文章:

java - SQLite 平均分

java - 非法 key 大小 - AES CBC 解密

java - 如何获取禁止()的 'reason'?

php - 无法使用 PHP 将数据库中的 PDF 替换为另一个 PDF

javascript - Chrome PDF Viewer 嵌入式下载按钮不起作用

java - 我需要ApplicationConfig.java吗

java - 根据 Dart 中的天数获取日期

python - 使用 pyPDF2 和 BytesIO 将 PDF 页面转换为图像

pdf - iTextSharp 可以将 PDF 文档转换为 PDF/A

Python Visio 转 pdf