解析PDF数据时如何考虑语法空白?

时间:2019-03-03 08:47:04

标签: parsing pdf syntax whitespace

我的问题是关于pdf文件中使用的语法。文档(PDF32000_2008.pdfpdf_reference_1-7.pdf)指出空白是什么:

  

空白字符
  分隔PDF句法的字符   彼此之间的名称和数字等构造;空格   字符是水平制表符(09h),行进纸(0Ah),格式进纸(0Ch),   回车(0Dh),空格(20h); (请参见7.2.2“字符”中的表1   设置”)

注意: 请注意,空格是指pdf文件的数据/内容(即,当使用编辑器vim打开时),而不是呈现的演示文稿(即,当在pdf阅读器中查看)

据我了解,这意味着这是一个有效的PDF对象

1 0 obj
<< /Type /Catalog 
/Pages 2 0 R
>>
endobj

(name)类型的两个对象之间:/Type/Catalog之间有一个SPACE (20h)字符,满足引用的目的,即“分离[这两个] PDF句法”构造”。

但是事实证明,我可以省略空白,同时仍然产生相同的渲染结果(在pdf.jsevince程序中)。因此,我的问题是这等效于上面显示的代码

1 0 obj
<< /Type/Catalog/Pages 2 0 R>>
endobj

1 个答案:

答案 0 :(得分:1)

是的,这是合法的。

在描述空格字符之后,您会发现以下内容:(添加了重点)

  

定界符 ()<>[],{ {1}},{}/是特殊的。它们分隔语法实体,例如字符串,数组,名称和注释。这些字符中的任何一个终止于其前面的实体,并且不包含在实体中。

因此,%之前不需要空格。