代码之家  ›  专栏  ›  技术社区  ›  djvg Carl Meyer

此PDF是否包含PostScript?

  •  -1
  • djvg Carl Meyer  · 技术社区  · 6 年前

    使用 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)。

    有人能告诉我吗?还是我完全走错了路?

    1 回复  |  直到 6 年前
        1
  •  2
  •   KenS    6 年前

    在我看来,这不像是PostScript,它看起来像PDF。因为你在读一个PDF文件,这并不奇怪!-)

    因为它不是PostScript,所以它没有过程定义的序言。

    您可以在PDF参考手册中找到操作员定义,该手册可以通过谷歌搜索找到。不要阅读ISO规范(你无论如何都不能得到,因为它是受版权保护的,而且必须付费),而是阅读Adobe规范,这样更容易。

    fwiw q为gsave(q为grestore),cm为concat矩阵(即concat)。rg是setrgbcolor。W、J和J设置图形状态中的线条宽度、线条帽和线条连接项,GS设置扩展图形状态,但实际上没有PostScript等效项。