为什么 pdflatex 在 \includegraphics 上崩溃?

为什么 pdflatex 在 \includegraphics 上崩溃?

这段代码:

\documentclass[12pt]{article}
\usepackage{graphicx}

\begin{document}
\section{a}
b
\includegraphics{Nomogram3d_v05a.pdf}
c

\end{document}

崩溃pdflatex并显示以下错误消息:

Command Line:   pdflatex.exe --interaction=errorstopmode --synctex=-1 "tst.tex"
Startup Folder: D:\klad

This is pdfTeX, Version 3.1415926-2.5-1.40.14 (MiKTeX 2.9)
entering extended mode
(D:\klad\tst.tex
LaTeX2e <2011/06/27>
Babel <v3.8m> and hyphenation patterns for english, afrikaans, ancientgreek, ar
abic, armenian, assamese, basque, bengali, bokmal, bulgarian, catalan, coptic,
croatian, czech, danish, dutch, esperanto, estonian, farsi, finnish, french, ga
lician, german, german-x-2013-05-26, greek, gujarati, hindi, hungarian, iceland
ic, indonesian, interlingua, irish, italian, kannada, kurmanji, latin, latvian,
 lithuanian, malayalam, marathi, mongolian, mongolianlmc, monogreek, ngerman, n
german-x-2013-05-26, nynorsk, oriya, panjabi, pinyin, polish, portuguese, roman
ian, russian, sanskrit, serbian, slovak, slovenian, spanish, swedish, swissgerm
an, tamil, telugu, turkish, turkmen, ukenglish, ukrainian, uppersorbian, usengl
ishmax, welsh, loaded.
("C:\Program Files\MiKTeX 2.9\tex\latex\base\article.cls"
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
("C:\Program Files\MiKTeX 2.9\tex\latex\base\size12.clo"))
("C:\Program Files\MiKTeX 2.9\tex\latex\graphics\graphicx.sty"
("C:\Program Files\MiKTeX 2.9\tex\latex\graphics\keyval.sty")
("C:\Program Files\MiKTeX 2.9\tex\latex\graphics\graphics.sty"
("C:\Program Files\MiKTeX 2.9\tex\latex\graphics\trig.sty")
("C:\Program Files\MiKTeX 2.9\tex\latex\00miktex\graphics.cfg")
("C:\Program Files\MiKTeX 2.9\tex\latex\pdftex-def\pdftex.def"
("C:\Program Files\MiKTeX 2.9\tex\generic\oberdiek\infwarerr.sty")
("C:\Program Files\MiKTeX 2.9\tex\generic\oberdiek\ltxcmds.sty"))))
No file tst.aux.
("C:\Program Files\MiKTeX 2.9\tex\context\base\supp-pdf.mkii"
[Loading MPS to PDF converter (version 2006.09.02).]
)Syntax Error: Kid object (page 1) is not an indirect reference (dictionary)

如果我注释掉该\includegraphics语句,即如果我运行:

\documentclass[12pt]{article}
\usepackage{graphicx}

\begin{document}
\section{a}
b
c

\end{document}

一切正常并产生输出。我检查了文件Nomogram3d_v05a.pdf是否存在,并且在 Sumatrapdf 查看器中渲染没有问题。

答案1

我看不出有什么理由不相信错误消息,即所包含的 PDF 文件无效。创建 PDF 文件的应用程序存在错误。尝试

pdfinfo Nomogram3d_v05a.pdf

得到提示,哪个程序可能是罪魁祸首。

错误描述

页面以页面树的形式组织,页面对象为根,中间节点和叶子为页面。所有这些对象都必须是编号对象(又称间接对象),因为某些 PDF 功能引用页面字典对象。如果此对象直接嵌入在页面树中,则它没有编号。

如何重现

我创建了一个这样的错误 PDF 文件。里面/Kids [...]应该有一个间接引用2 0 obj,其中包含内容<</Type/Page...>>。在这种情况下,后者对象被直接放入数组中,/Kids导致 PDF 文件无效。

%PDF-1.5
%ÐÔÅØ
3 0 obj
<<
/Length 37
>>
stream
1 0 0 1 40 40 cm
0 0 20 20 re f
endstream
endobj
1 0 obj
<<
/ProcSet [ /PDF ]
>>
endobj
4 0 obj
<<
/Type /Pages
/Count 1
/Kids [
  <<
    /Type/Page
    /Contents 3 0 R
    /Resources 1 0 R
    /Parent 4 0 R
    /MediaBox[0 0 100 100]
  >>
]
>>
endobj
5 0 obj
<<
/Type /Catalog
/Pages 4 0 R
>>
endobj
xref
0 6
0000000002 65535 f
0000000096 00000 n
0000000000 00000 f
0000000015 00000 n
0000000135 00000 n
0000000299 00000 n
trailer
<< /Size 6
/Root 5 0 R
>>
startxref
348
%%EOF

f提示:以或n之后结尾的行xref必须以 DOS 行结尾("\r\n"= 字节 13 和 10)或以空格和换行符结尾("␣\n"= 字节 32 和 10)。

一些 PDF 程序的结果

  • MiKTeX 的 pdfTeX 1.40.16、MiKTeX 的pdfinfo0.32.0、TeX Live 的pdfinfo0.30.0 显示错误:

    Syntax Error: Kid object (page 1) is not an indirect reference (dictionary)
    
  • SumatraPDF v3.0 显示该文档。

  • Adobe Acrobat Reader DC 2015 显示该文档,但由于未指定的读取错误而无法保存它。

  • pdftk2.02 打破了:

    Unhandled Java Exception in create_output():
    ExceptionConverter: java.io.IOException: The document has no pages.
    
  • TeX Live 的 pdfTeX 1.40.16 和xpdf3.03 存在以下问题:

    Syntax Error: Page tree reference is wrong type (dictionary)
    Syntax Error: Invalid page count in page tree
    
  • Ghostscript ps2pdf9.15 和 9.16 有效。

修复 PDF 文件

为了修复,需要一个程序,该程序具有足够的容忍度来读取和理解文件,并在保存文件时纠正错误。

  • (-) 通过 SumatraPDF 保存文件只是复制文件,但不会修复它。

  • (-) AR 或pdftk无法读取和/或保存文件。

  • (+) Ghostscript 成功:

    ps2pdf Nomogram3d_v05a.pdf Nomogram3d_v05a-fixed.pdf
    

相关内容