使用PyPDF2
来读取带有某些线条图的pdf
文件,并使用如下代码
from PyPDF2 import PdfFileReader
with open('temp.pdf','rb') as f:
pdf = PdfFileReader(f)
for page in pdf.pages:
print page['/Contents'].getData()
我看到的页面内容如下:
q 0.24 0 0 0.24 0 0 cm
/R7 gs
8.5 w
1 J
1 j
0 0 0 RG
2361 118.961 m
2361 3388.96 l
S
2361 3388.96 m
118 3388.96 l
S
...
对我来说,这看起来像PostScript,为运算符使用了别名(如果我错了,请纠正我)。
我相信我可以破译其中的一些别名,例如m
,l
和S
在我看来分别像newpath moveto
,lineto
和stroke
。但是,如果我能看到别名定义(bind def
)会很有帮助,我认为这些别名定义必须出现在文件开头。
如果您知道如何的话,我想这应该不难,但是我仍然无法找出如何使用PyPDF2
访问此后记标题信息的方法(尽管阅读了文档并在网上进行了搜索,包括StackOverflow )。
有人可以告诉我吗?还是我完全走错了轨道?
答案 0 :(得分:2)
在我看来,这看起来不像PostScript,而是PDF。由于您正在阅读PDF文件,这不足为奇! :-)
由于它不是PostScript,因此不会有程序定义的序言。
您可以在《 PDF参考手册》中找到操作员定义,该参考可以通过Google搜索找到。不要阅读ISO规范(无论如何,您都无法获得它,因为它已受版权保护并且必须付费),而应该阅读Adobe规范,它更容易。
FWIW q是gsave(Q是grestore),而cm是concat矩阵(即concat)。 RG是setrgbcolor。 w,j和J在图形状态下设置线宽,linecap和linejoin的条目,而gs设置扩展的图形状态,实际上没有PostScript等效项。