Ich bin es gewohnt, PDF-Formulare aus PHP mit PDFTK auszufüllen. Vor kurzem wurde ich gebeten, einen Code-128-Barcode in ein PDF einzufügen. Dazu habe ich ein PDF mit mehreren Textfeldern für menschenlesbare Einträge sowie einem speziellen Textfeld erstellt, dessen Text mit einer speziellen Schriftart dargestellt wird, die Code-128-Symbole darstellt. Diese Schriftart finden Sie hier:http://www.jtbarton.com/Barcodes/Code128.aspxDer einzige Unterschied zwischen menschenlesbaren Feldern und Barcode-Feldern besteht in der Schriftart, die zur Anzeige der Zeichen verwendet wird.
Bis zu diesem Schritt funktioniert alles einwandfrei. Mit Adobe Reader kann ich einen vorbereiteten Barcode in mein spezielles Feld kopieren und einfügen, er wird einwandfrei dargestellt und kann von Barcode-Lesegeräten gescannt werden. Ein Beispiel ist Ñ000002HÓ
( Ñ
ist ein Starter, dann sind meine Daten 000002
, dann folgt die Prüfsumme H
und das Ganze endet mit dem Stopper Ó
).
Dann bekomme ich Probleme, wenn ich versuche, das Formular mit PDFTK auszufüllen. Wenn ich versuche, mein spezielles Feld damit auszufüllen, Ñ000002HÓ
werden nur Zeichen aus der ASCII-Tabelle (also ) gerendert und anstelle der erwarteten Barcodesymbole für und 000002H
werden Quadrate angezeigt . Überraschender ist, dass der Versuch, menschenlesbare Felder mit genau derselben Phrase auszufüllen, wie am Schnürchen läuft.Ñ
Ó
Ñ000002HÓ
Ich habe überprüft, dass beide Feldarten genau dieselbe Zeichenfolge erhalten (einschließlich UTF-8-Kodierung), ich habe geprüft, ob die Schriftart gut eingebettet ist, um Anzeigeprobleme zu vermeiden, ich habe sichergestellt, dass die XFDF-Datei wohlgeformt ist usw.
Hier ein XFDF-Beispiel zum Ausfüllen eines PDF-Formulars mit den Feldern „Mensch“ und „Barcode“.
<?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>
Ich fürchte, ich habe keine Idee mehr, wie ich dieses Problem lösen könnte. Wenn Sie eine Idee haben, wäre ich für Ihre Hilfe sehr dankbar.
Antwort1
Endlich habe ich eine Lösung gefunden. Genauer gesagt einen Workaround.
Es scheint, dass PDFTK UTF-8-Zeichen nicht richtig verarbeitet, wenn eingebettete Identity-H-Schriftarten auf Formularfelder angewendet werden. Um die PDF-Datei richtig darzustellen, anstattErsetzenein Feld mit Inhalt haben, setzen Sie diesen Inhalt einfach alsStandardwertdieses Felds. Dadurch übernimmt Acrobat den Rendering-Prozess des Formularfelds, anstatt ihn an PDFTK zu delegieren.
Fügen Sie dazu einfach need_appearances
die PDFTK-Befehlszeile hinzu.
NOTIZ- Das Formularfeld bleibt im von PDFTK erstellten PDF erhalten, d. h. sein Inhalt kann anschließend vom Benutzer im Adobe Reader geändert werden.