2009-03-09 13 views
12

Ich habe eine PDF, die mit dem Foxit-Formular-Designer erstellt wurde. Auf meinem Design-System habe ich die Barcode-Schriftart installiert. Die Barcode-Schriftart wird in einem der AcroFields verwendet. Es scheint, dass Foxit die Schriftart nicht in das Dokument einbettet.Itext Schrift in ein PDF einbetten

Ich habe auch Kunden, die nicht die Barcode-Schriftart in ihren Computern installiert haben, und so möchte ich die Schriftart in das PDF einbetten. Gibt es eine Möglichkeit für mich, eine Schriftart, die in den AcroFields verwendet wird, mit iText in das PDF einzubetten?

EDIT: Die Schriftart scheint im Text enthalten sein, aber nicht die Felder, daher wird die Schriftart (Barcode) nicht gedruckt.

Antwort

9

Ich bin mir fast sicher, dass Sie jetzt eine Antwort erhalten, aber vielleicht möchten andere eine detaillierte Ansicht der Lösung erhalten. Unten ist der Beispiel-Java-Code, den ich verwendet habe, um Schriften in das generierte PDF einzubetten (nur in einigen Fällen nützlich, da die Größe der Dokumente dramatisch zunimmt). Als kostenloses Tool die PDF-Formulare zu erstellen, habe ich den Openoffice Writer, verwendet von Formen innerhalb der Dokumente hinzufügen und den Export der Dokumente als PDF-Dateien:

PdfReader pdfTemplate = new PdfReader(templateName); 
ByteArrayOutputStream out = new ByteArrayOutputStream(); 
BaseFont unicode = BaseFont.createFont(unicodeFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
PdfStamper stamper = new PdfStamper(pdfTemplate, out); 
//assigning the font to the field 
stamper.getAcroFields().setFieldProperty("myField", "textfont", unicode, null); 
stamper.getAcroFields().setField("myField", someValue); 
stamper.close(); 
pdfTemplate.close(); 
+0

ich fast das gleiche Problem begegnet bin, und ich habe getan das gleiche wie du, aber ich kann die Schriftart für den Text, den ich mit Java eingegeben habe, immer noch nicht einbetten. Kannst du dir meine Frage ansehen (http://stackoverflow.com/questions/34335481/how-to- embed) -font-nach-flattening-template-using-itext)? Danke im Voraus! – Elderry

1
PdfContentByte ab = yourPDFWriter.getDirectContent(); 
// field: PdfFormField.createTextField(...); 
PdfAppearance ap = ab.createAppearance(320, 30); // size of field 
field.setDefaultAppearanceString(ap); 

Das sollte den Trick tun.