Я привык заполнять PDF-формы из PHP, используя PDFTK. Недавно меня попросили вставить штрих-код code-128 в PDF. Для этого я создал PDF-файл с несколькими текстовыми полями для удобочитаемых записей и специальными текстовыми полями, текст которых отображается специальным шрифтом, представляющим символы кода 128. Этот шрифт можно найти здесь: http://www.jtbarton.com/Barcodes/Code128.aspx . Единственная разница между читаемыми человеком полями и штрих-кодом заключается в шрифте, используемом для отображения символов.
До этого шага все работало нормально. С помощью Adobe Reader я могу скопировать и вставить готовый штрих-код в свое специальное поле, он отображается очень хорошо, этот код может быть отсканирован считывателем штрих-кода. Примером является Ñ000002HÓ
(Ñ
- стартер, затем мои данные 000002
, контрольная сумма H
следует, и все заканчивается пробкой Ó
).
Тогда у меня возникают проблемы при попытке заполнить форму PDFTK. Если я пытаюсь заполнить свое специальное поле с помощью Ñ000002HÓ
, оно отображает только символы в таблице ASCII (то есть 000002H
) и отображает какие-то квадраты вместо ожидаемых символов штрих-кода для Ñ
и Ó
. Еще более удивительно, что попытка заполнить читабельные поля одной и той же фразой Ñ000002HÓ
работает как шарм.
Я проверил, что оба вида полей получают одинаковую последовательность символов (включая кодировку utf-8), я проверил, что шрифт был хорошо внедрен, чтобы предотвратить проблемы с отображением, я убедился, что файл XFDF правильно сформирован и т. Д.
Здесь образец XFDF, используемый для заполнения формы PDF полями с именами «человек» и «штрих-код»
<?xml version="1.0" encoding="UTF-8"?>
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
<fields>
<field name="human"><value>Ñ000002HÓ</value></field>
<field name="barcode"><value>Ñ000002HÓ</value></field>
</fields>
</xfdf>
Боюсь, у меня больше нет идей, как решить эту проблему. Если вы это сделаете, ваша помощь будет высоко ценится.
Наконец, я нашел решение. Более точно обходное решение.
кажется, что PDFTK не обрабатывает символы UTF-8, правильный путь со встраивает шрифты Идентификационных-данных-H, примененные к полям формы. Для рендеринга PDF, регистрируют правильный путь, вместо замена поле с содержанием, просто устанавливают это содержание как значение по умолчанию из этого поля. Это заставит Acrobat обработать процесс рендеринга поля формы вместо того, чтобы делегировать его к PDFTK.
Для этого просто добавляют need_appearances
к командной строке PDFTK.
ПРИМЕЧАНИЕ - поле формы остается в PDF, созданном PDFTK, означая, что его содержание может затем быть изменено пользователем в Adobe Reader.