当我尝试将现有 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 安装以更正ProcSets
该ProcSet
警告。
这是我在重新编译 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 发行版的目录结构中自行找到适当的源文件。