Управление PDF-файлом - PullRequest
0 голосов
/ 20 марта 2019

Я хотел бы прочитать файл PDF в виде текста (postscript), добавить новые объекты в структуру файла и сохранить окончательный вывод в виде нового PDF, но если я просто скопировал содержимое PDF PostScript и вставил его во вновь созданный файл Файл PDF (где encoding='ansi'), файл не работает.

Я уверен, что это может быть проблема кодирования, но я не уверен, что мне следует делать, чтобы иметь действительный формат файла PDF после манипулирования исходным содержимым PostScript.

Вот фрагмент кода, который не работал со мной:

pdf_file = open('Input.pdf', 'r', encoding='ansi').read()
pdf_file_bytes = bytearray(pdf_file, 'ansi')
pdf_file = open('Output_bytes.pdf', 'wb').write(pdf_file_bytes)

И, как я уже сказал, выходной PDF неверен!

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

PDF-файл представляет собой сложный формат файла, состоящий из различных объектов, если только вы не будете тщательно придерживаться низкоуровневого синтаксиса спецификации PDF, будет трудно или невозможно произвольно заменить некоторые байты некоторыми другими байтами, и это приведет к неподвижномудействительный файл PDF.

Более подробно о том, чего вы пытаетесь достичь.Например, может существовать высокоуровневый способ делать то, что вы пытаетесь сделать, не включая непосредственное управление синтаксисом PDF.Например, если вам нужно изменить шрифт, добавить аннотацию, установить версию PDF и т. Д. В противном случае, если вам действительно нужно изменить синтаксис PDF, вам нужно использовать библиотеку, способную работать с объектами низкого уровня.

0 голосов
/ 20 марта 2019

Первая проблема; содержимое файла PDF - PDF, а не PostScript.

Во-вторых, PDF - это двоичный файл, поэтому, если вы скопируете и вставите в него любой тип перевода (например, CR / LF), сломает его.

Вы не сказали, какой язык программирования использует ваш код, хотя он выглядит как Python. Если это Python, то чтение файла в двоичном виде вместо текста может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...