PDFTK、CODE128 和 UTF-8

PDFTK、CODE128 和 UTF-8

我習慣使用 PDFTK 從 PHP 填寫 PDF 表單。最近,我被要求在 PDF 中插入 code-128 條碼。為此,我創建了一個 PDF,其中包含多個用於人類可讀條目的文本字段以及一個特殊的文本字段,其中文本使用表示 code-128 符號的特殊字體呈現。該字體可以在這裡找到:http://www.jtbarton.com/Barcodes/Code128.aspx。人類可讀欄位和條碼欄位之間的唯一區別是用於顯示字元的字型。

到這一步,一切正常。使用 Adob​​e 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 無法透過應用於表單欄位的嵌入 Identity-H 字體以正確的方式處理 UTF-8 字元。為了以正確的方式呈現 PDF 文件,而不是替換一個包含內容的字段,只需將此內容設為預設值這個領域的。這將使 Acrobat 處理表單欄位的渲染過程,而不是將其委託給 PDFTK。

為此,只需新增need_appearances到 PDFTK 命令列即可。

筆記- 表單欄位保留在 PDFTK 建立的 PDF 中,這表示使用者可以在 Adob​​e Reader 中修改其內容。

相關內容