pdfLatex 警告:PDF 包含:无效的其他资源(没有字典):忽略

pdfLatex 警告:PDF 包含:无效的其他资源(没有字典):忽略

当我尝试将现有 PDF 添加到 latex 文档中时,我遇到了这个问题

pdfTeX warning: /usr/texbin/pdflatex (file ./filename.pdf): PDF inclusion
: invalid other resource which is no dict (key 'ProcSets', type <array>); ignored.

任何帮助,发生在两个不同的文件上,我试图将其包含在 PDF 输出中

答案1

PDF 规范规定,Resources字典中的所有条目(资源类型)本身必须是(子)字典,除了 Procset条目,即数组。另一方面,任何字典中的未知条目都会被忽略。

在您的文件中,有一个ProcSets(看到区别了吗?)条目。它不是字典,因此发出警告。它是未知的键,因此被忽略。您也可以放心地忽略它。无论如何,ProcSet条目是可选的,并且自 1.4 版以来已过时——也就是说,已经有 10 多年了。有趣的是,什么应用程序会创建这样的文件?

答案2

正如另一个答案中所述,ProcSet在 PDF 中已过时,而且ProcSets无论如何都是拼写错误:兼容的读者会忽略它。我怀疑包含资源的 PDF 文件ProcSets是使用 Skia/PDF 创建的——代码如下:

https://github.com/google/skia/blob/master/src/pdf/SkPDFResourceDict.cpp

无论如何,从 Draw.IO 导出的 PDF 文件都是这种情况。更新:Skia/PDF 库中的错误现已得到纠正,但修复需要一些时间才能融入应用程序。

总之,您可以忽略该消息:pdfTeX 不会将有问题的资源复制到其输出中,但这不会造成任何损害。我已修改了我自己的 pdfTeX 安装以更正ProcSetsProcSet警告。

这是我在重新编译 pdftex 和相关程序之前使用的补丁。

diff --git a/src/tex/pdflib/pdftoepdf.cc b/src/tex/pdflib/pdftoepdf.cc
--- a/src/tex/pdflib/pdftoepdf.cc
+++ b/src/tex/pdflib/pdftoepdf.cc
@@ -1014,7 +1014,8 @@
             key = obj1->dictGetKey(i);
             if (strcmp("Font", key) == 0)
                 copyFontResources(&obj2);
-            else if (strcmp("ProcSet", key) == 0)
+            else if (strcmp("ProcSet", key) == 0
+                     || strcmp("ProcSets", key) == 0)
                 copyProcSet(&obj2);
             else
                 copyOtherResources(&obj2, key);

您必须在 TeX 发行版的目录结构中自行找到适当的源文件。

相关内容