我有几个PDF文件,我试图通过Python代码读取文件的开头,以确认文件是PDF格式/标题。(Python部分对这个问题并不是100%重要)。
我在各种文件的开头看到以下内容:
示例一(前34个字节为十六进制-无法以任何其他方式看到模式):
b'u\xabZj\x9ae\x89\xc6\xad\x8a\x89\xff\xc7\xe7h\xc2yhi\xd6\xda\xb1\xee\xb8%PDF-1.2\r%'
字符串
示例文件二(ASCII格式):
2 J
%PDF-1.7
型
示例文件三等:
\r\n%PDF-1.2
型
或者:
\r\n\r\n\r\n\r\n%PDF-1.4
型
我可以处理这些文件(带有换行符/回车符)(即使我看不到头规范中允许的内容)。
我在Linux上的/usr/share/file/magic/pdf
中看到了\xef\xbb\xbf%PDF-
。这是定义的用法(即Unicode和字节排序信令)。它很容易处理。
我需要有关上述#1和#2格式的帮助。为什么我在文件开头看到这些字节?它们意味着什么?这些值的好参考在哪里?或者它们只是一个错误?(有问题的文件在MacOS上打开干净)。
提前感谢-马丁
2条答案
按热度按时间64jmpszr1#
一个有效的PDF文件必须以
%PDF-
行开头。在这之前的任何内容都将使您的文件成为一个非PDF文件,仅(可能)包含一个PDF文件。很久以前,Adobe决定,虽然,也支持这样的文件与一些任意前导字节(高达1KB,我认为)直接在他们的Acrobat和Reader软件,和许多其他pdf处理器软件产品效仿他们的例子。
尽管如此,根据规范,这些文件本身不是pdf文件,既不是你的四个例子,也不是任何带有BOM的文件。
尽管如此,
我需要有关上述#1和#2格式的帮助。为什么在文件开头看到这些字节?它们是什么意思?这些值的参考在哪里?或者它们只是一个错误?
就所包含的pdf文件而言,那些额外的字节是可以忽略的垃圾。。
它们通常没有意义。有时它们被添加是因为pdf创建程序的错误,有时它们被添加是因为传输错误。有些人试图利用Adobe软件的这种松散性将他们自己的元数据添加到PDF中。
lnxxn5zx2#
我的Python代码基于收到的答案:
字符串
有时灵