私は PDFTK を使用して PHP から PDF フォームに入力することに慣れています。最近、PDF にコード 128 バーコードを挿入するように依頼されました。そのために、人間が読めるエントリ用のいくつかのテキスト フィールドと、コード 128 シンボルを表す特別なフォントでテキストがレンダリングされる特別なテキスト フィールドを含む PDF を作成しました。このフォントは次の場所にあります。http://www.jtbarton.com/Barcodes/Code128.aspx人間が読めるフィールドとバーコード フィールドの唯一の違いは、文字を表示するために使用されるフォントです。
このステップまで、すべて正常に動作します。Adobe Reader を使用すると、用意したバーコードをコピーして特別なフィールドに貼り付けることができ、問題なくレンダリングされ、このコードはバーコード リーダーでスキャンできます。サンプルの例は、Ñ000002HÓ
(Ñ
がスターター、次に がデータ000002
、チェックサムH
が続き、最後がストッパーÓ
) です。
その後、PDFTK でフォームに入力しようとすると問題が発生します。 特別なフィールドに を入力しようとすると、Ñ000002HÓ
ASCII テーブル内の文字 (つまり ) のみがレンダリングされ、および000002H
の予想されるバーコード シンボルではなく、何らかの四角形が表示されます。 さらに驚くべきことに、人間が読めるフィールドをまったく同じフレーズで入力しようとすると、うまく機能します。Ñ
Ó
Ñ000002HÓ
両方の種類のフィールドがまったく同じ文字シーケンス (utf-8 エンコードを含む) を受信することを確認し、表示の問題を防ぐためにフォントが適切に埋め込まれていることを確認し、XFDF ファイルが適切に形式化されていることを確認しました。
ここでは、「人間」と「バーコード」という名前のフィールドを持つPDFフォームに入力するために使用されるXFDFサンプルを示します。
<?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ファイルを正しくレンダリングするには、交換するコンテンツのあるフィールドの場合は、このコンテンツをデフォルト値このフィールドの。これにより、フォーム フィールドのレンダリング プロセスが PDFTK に委任されるのではなく、Acrobat によって処理されるようになります。
これを行うには、need_appearances
PDFTK コマンド ラインに追加するだけです。
注記- フォーム フィールドは PDFTK によって作成された PDF 内に残るため、ユーザーは Adobe Reader でその内容を変更できます。