我正在尝试将一些以 pdf 格式保存的矢量图形包含到我的技术文件中。我正在使用\includegraphics
,所以我的代码行是\includegraphics[width=20mm]{pics/KnickExpohne.pdf}
它对其他图像运行良好,但对这两个图像却不行,这些特定文件似乎存在问题。它们非常相似,所以可能是由于它们包含的一些元素。
无论如何,我该如何修复此问题?这是错误代码(对于其他文件,它是Error (3700)
)
[1 <./pics/KnickStossohne.pdfSyntax Error (3709): Bad 'Length' attribute in stream
!pdfTeX error: /Library/TeX/texbin/pdflatex (file ./pics/KnickStossohne.pdf): P
DF inclusion: type <error> cannot be copied
==> Fatal error occurred, no output PDF file produced!
我在 Mac 上,使用 TeXShop,如果这有区别的话。
我很高兴能得到任何帮助:)
答案1
我分析了第一个文件KnickStossohne.pdf
。确实,PDF文件无效。它包含没有长度规范的流对象,例如:
5 0 obj
<</Type /Pattern/PatternType 1/PaintType 1/TilingType 1/BBox [0 0 28 28]/XStep 28/YStep 28/Resources <</ProcSet [/PDF /ImageC]>>
>>
stream
...
endstream
endobj
<<...>>
关键字前的字典stream
不包含/Length
流中的字节数。
解决方法:
运行文件PDFtk插入/Length
:
pdftk KnickStossohne.pdf cat output KnickStossohne-fixed.pdf compress
并用作KnickStossohne-fixed.pdf
图像。compress
可以省略选项,但它会减小文件大小,因为原始文件未压缩。
评论:
- 需要知道流的长度。这样读取器才知道流的结尾在哪里。查找关键字
endstream
并不可靠,因为流数据可以包含字节序列endstream
。