Этот PDF содержит PostScript? - PullRequest
       27

Этот PDF содержит PostScript?

0 голосов
/ 03 сентября 2018

Использование 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), которые, я полагаю, должны присутствовать где-то в начале файла.

Думаю, это не должно быть сложно, если вы знаете, как, но я не смог выяснить, как получить доступ к этой информации заголовка postscript с помощью PyPDF2 (несмотря на чтение документов и поиск в Интернете, включая StackOverflow).

Может кто-нибудь сказать мне? Или я совсем не на том пути?

1 Ответ

0 голосов
/ 03 сентября 2018

Это не похоже на PostScript для меня, это похоже на PDF. Поскольку вы читаете PDF-файл, это вряд ли удивительно! : -)

Поскольку это не PostScript, у него не будет пролога с определениями процедур.

Определения операторов можно найти в Справочном руководстве в формате PDF, которое можно найти с помощью поиска Google. Не читайте спецификацию ISO (которую вы все равно не сможете получить, поскольку она защищена авторским правом и должна быть оплачена), вместо этого читайте спецификацию Adobe, это проще.

FWIW q - gsave (а Q - grestore), а cm - матрица concat (то есть concat). RG это setrgbcolor. w, j и J устанавливают записи в графическом состоянии для linewidth, linecap и linejoin, а gs устанавливает расширенное графическое состояние, которое на самом деле не имеет PostScript-эквивалента.

...