PDFTK, CODE128 и UTF-8

PDFTK, CODE128 и UTF-8

Я привык заполнять формы PDF из PHP с помощью PDFTK. Недавно меня попросили вставить штрихкод code-128 в PDF. Для этого я создал PDF с несколькими текстовыми полями для записей, удобочитаемых человеком, а также специальными текстовыми полями, текст которых отображается специальным шрифтом, представляющим символы code-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>

Боюсь, у меня больше нет идей, как решить эту проблему. Если у вас есть, ваша помощь будет очень кстати.

решение1

Наконец-то я нашел решение. Точнее, обходной путь.

Похоже, PDFTK не обрабатывает символы UTF-8 правильно с вставленными шрифтами Identity-H, применяемыми к полям формы. Чтобы отобразить файл PDF правильно, вместозаменаполе с содержимым, просто установите это содержимое какзначение по умолчаниюэтого поля. Это позволит Acrobat обрабатывать процесс рендеринга поля формы вместо того, чтобы делегировать его PDFTK.

Для этого просто добавьте need_appearancesв командную строку PDFTK.

ПРИМЕЧАНИЕ- Поле формы остается в PDF-файле, созданном PDFTK, то есть его содержимое может быть изменено пользователем в Adobe Reader.

Связанный контент