【问题标题】:Remove XMP Metadata on PDF/A删除 PDF/A 上的 XMP 元数据
【发布时间】:2015-07-21 18:19:37
【问题描述】:

有没有一种方法可以在不删除 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 元数据。不过,您可能想要删除某些部分。你想丢弃哪些部分?
  • @mkl 嗨,说以下“2015-07-20 16:56:13 XMD2001E xmp(3:1): XMP property 'form' with namespace 'oracle.com/igbu/page_breaks/1.0#' 的程序是没有定义的 ”。我需要删除所有 oracle 的东西。
  • 在这种情况下,您最好阅读 XMP 文件,使用一些 xmp 库(或一些 XML 库)对其进行操作,然后将操作后的数据写回 PDF。
  • @mkl 这是我目前的想法。我目前正在使用 PDFBox 读取 XML 并尝试替换它。

标签: java pdf


【解决方案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/A 验证器正确测试生成的 PDF 文件确保您在生产工作流程中使用它之前做对了)。

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

PDF/A-1 不要求符合标准的文档包含任何条目 在文档信息字典中。尽管如此,无论何时 PDF 1.4 参考中指定的那些信息条目(除了 被困条目)存在,必须有一个等效的条目 文档的元数据,两者都必须根据 PDF/A-1 的规定。

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

【讨论】:

  • 这是我现在正在尝试的,我正在使用PDF框来替换它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-02
  • 2014-02-13
  • 2016-12-05
相关资源
最近更新 更多