PDFTK, CODE128 e UTF-8

PDFTK, CODE128 e UTF-8

Estou acostumado a preencher formulários PDF de PHP usando PDFTK. Recentemente, fui solicitado a inserir um código de barras code-128 em um PDF. Para fazer isso, criei um PDF com vários campos de texto para entradas legíveis por humanos, além de campos de texto especiais cujo texto é renderizado com uma fonte especial que representa os símbolos do código 128. Esta fonte pode ser encontrada aqui:http://www.jtbarton.com/Barcodes/Code128.aspx. A única diferença entre campos legíveis e de código de barras é a fonte usada para exibir os caracteres.

Até esta etapa, tudo funciona bem. Com o Adobe Reader, posso copiar e colar um código de barras preparado em meu campo especial, ele é renderizado perfeitamente, esse código pode ser lido por leitores de código de barras. Um exemplo de exemplo é Ñ000002HÓ( Ñé um starter, então meus dados 000002, a soma de verificação Hsegue e o todo termina com o stopper Ó).

Então tenho problemas ao tentar preencher o formulário com PDFTK. Se eu tentar preencher meu campo especial com Ñ000002HÓele, ele apenas renderizará caracteres na tabela ASCII (ou seja, 000002H) e exibirá algum tipo de quadrado em vez dos símbolos de código de barras esperados para Ñe Ó. O mais surpreendente é que tentar preencher campos legíveis por humanos com exatamente a mesma Ñ000002HÓfrase funciona perfeitamente.

Verifiquei que ambos os tipos de campos recebem exatamente a mesma sequência de caracteres (incluindo codificação utf-8), verifiquei se a fonte estava bem incorporada para evitar problemas de exibição, garanti que o arquivo XFDF estivesse bem formado, etc.

Aqui está um exemplo de XFDF usado para preencher um formulário PDF com campos chamados 'humano' e 'código de barras'

<?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>

Receio não ter mais ideias de como resolver esse problema. Se você fizer isso, sua ajuda será muito apreciada.

Responder1

Finalmente encontrei uma solução. Mais precisamente, uma solução alternativa.

Parece que o PDFTK não lida com caracteres UTF-8 da maneira correta com fontes incorporadas Identity-H aplicadas a campos de formulário. Para renderizar o arquivo PDF da maneira correta, em vez desubstituindoum campo com um conteúdo, basta definir esse conteúdo como ovalor padrãodeste campo. Isso fará com que o Acrobat lide com o processo de renderização do campo do formulário em vez de delegá-lo ao PDFTK.

Para fazer isso, basta adicionar need_appearancesà linha de comando do PDFTK.

OBSERVAÇÃO- O campo do formulário permanece no PDF criado pelo PDFTK, ou seja, seu conteúdo pode ser modificado pelo usuário no Adobe Reader.

informação relacionada