PDF 1.7的语法。(BNF或变体)

PDF 1.7的语法。(BNF或变体),pdf,grammar,bnf,ebnf,Pdf,Grammar,Bnf,Ebnf,我正在寻找PDF 1.7的语法(BNF或变体) 绝对不是googleablePDF是一种非上下文无关的二进制格式。例如,在PDF中,您需要在解析二进制流之前读取并解释二进制流的大小 例如: 10 0 obj <</Type /XObject /Subtype /Image /Width 260 /Height 52 /ColorSpace /DeviceRGB /SMask 10 0 R /BitsPerComponent 8 /Filter /FlateDecode /Length

我正在寻找PDF 1.7的语法(BNF或变体)


绝对不是googleable

PDF是一种非上下文无关的二进制格式。例如,在PDF中,您需要在解析二进制流之前读取并解释二进制流的大小

例如:

10 0 obj
<</Type /XObject
/Subtype /Image
/Width 260
/Height 52
/ColorSpace /DeviceRGB
/SMask 10 0 R
/BitsPerComponent 8
/Filter /FlateDecode
/Length 4570>> stream
--- insert binary data here ---
endstream
endobj
10 0对象
流动
---在此处插入二进制数据---
尾流
endobj
无法判断二进制数据是否包含内部标记
endstream
endobj
,因此您除了在解析流之前读取流的长度之外别无选择

,因此不可能为PDF构造BNF语法

请查看此处的规格:

我不知道PDF文件格式是否有语法形式的正式规范,不管是否有BNF

但我碰巧知道,ISO技术委员会171/SC2目前正在研究PDF-2.0规范,其下一次面对面会议将于2012年9月11日至12日在柏林举行,会议议程主题为“特设委员会的更新:[……]iv.验证PDF文件的文件格式语法(L.Rosenthol)”我将哪个议程项目视为“更多的人似乎对更正式的PDF语法描述感兴趣”…:-)


Leonard Rosenthol是Adobe PDF高级用户,他经常在Adobe用户论坛上回答问题。也许在那里问个问题是个好主意?很有可能,你会得到比这里更好的答案。

二进制并不意味着它不能有语法。如果您查看PDF规范,您将看到几乎所有的构造都是“可打印的”,除了二进制文本(流)。一定有人写过PDF解析器,所以我猜一定是有语法的。@3D Grabber:yms没有说“二进制文件不能有语法”。他说的更多的是“上下文无关格式不能有BNF语法”。@pipitas:“二进制文件不能有语法。”这基本上是他在编辑答案和澄清之前说的。我现在明白了。这很古老,但是……PDF的非上下文无关语法可以被描述为一堆上下文无关语法吗。例如,整体结构是一个上下文无关语法,然后每个组件对象都用它们自己的上下文无关语法进行描述?@George不是全部。。。具有加密、压缩和100种不同编码的streams结构始终是非上下文无关的,但确实有某些部分可以被认为是上下文无关的。例如,页面或xobject的内容、嵌入式javascript、嵌入式xml、一些嵌入式字体格式(并非全部,因为位图是混合的一部分)、一些用于定义着色和渐变的自定义函数(这些函数有一个合适的名称,但我现在忘记了,代码与postscript非常相似)。因此,在某种程度上你是正确的。不要把PDF看作是一个单一语法的文件,而应该把它看作是一个数据层次结构(例如文件目录),其中一些数据项可以用BNF或变体来描述。请参阅:并注意第3节中的所有规范性引用。