Как изменить значение текстового поля в pdf - PullRequest
0 голосов
/ 04 февраля 2011

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

Когда я пытаюсь сделать то же самое с файлом eps, он работает, но, поскольку eps не сохраняет ориентацию страницы (AFAIK), есть вероятность, что ончто-то будет отличаться с разными именами.

Кто-нибудь знает, почему это не сработало или как изменить текстовое поле в файле PDF (с помощью sed)?

(я создал мастерPDF с Illustrator CS4)

Спасибо

1 Ответ

0 голосов
/ 04 февраля 2011

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

Если вы ЗНАЕТЕ, что ваш редактор не изменит байты EOL (или то, что он считает байтами eol), и вы НЕ меняете длину объекта текстовой записи в целом, все в порядке.

Например:

1 0 obj
<</Type/Annotation/Subtype/Widget/V(PlaceHolder Value)/T(Field Title)...>>
endobj

Если ваше новое значение длиннее, чем "значение заполнителя", вы ввернуты.

Большинство PDF-файлов содержат довольно много сжатых двоичных данных. Некоторые из этих данных будут неверно истолкованы как символы EOL. Их изменение будет:
a: прервать сжатый поток
b: возможно, изменить байтовые смещения остальной части PDF.

Когда я взламываю на файлы PDF, я всегда использую шестнадцатеричный редактор.

Итог: не связывайтесь с PDF-файлами как текстовым потоком. Разберитесь с ними в виде файлов PDF, используя библиотеку PDF. Там наверняка найдется способный изменять значения полей формы на выбранном вами языке.

Вы также можете заглянуть в FDF и XFDF, чтобы узнать, подойдут ли они вам лучше. Оба формата файлов хранят пары поле / значение и ссылку на форму для использования с этими парами. FDF использует синтаксис PDF, а XFDF - это грамматика XML. Вы можете подать [X] FDF своему конечному пользователю, и он увидит заполненную форму.

ВНИМАНИЕ: Если форма не поддерживает Reader (требуется Acrobat (pro?)), Они не смогут сохранить версию формы, которую они получают после открытия [X] FDF, только просматривать / распечатывать ее. Конечно, они могут сохранить [X] FDF, но многие пользователи могут отказаться от этого странного нового формата.

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