由于“流中的‘长度’属性错误”而无法包含 PDF 文件

由于“流中的‘长度’属性错误”而无法包含 PDF 文件

我正在尝试将一些以 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!

我在这里上传了文件:1 2

我在 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

相关内容