2009-03-09 12 views
12

Ho un pdf che è stato creato utilizzando il form designer Foxit. Sul mio sistema di progettazione, ho installato il font del codice a barre. Il font del codice a barre viene utilizzato in uno degli AcroField. Sembra che foxit non incorpori il carattere nel documento.Itext embed font in a PDF

Ho anche clienti che non hanno il carattere di codice a barre installato nei loro computer, e quindi vorrei incorporare il carattere nel PDF. C'è un modo per me di incorporare un font che viene utilizzato negli AcroField nel PDF usando iText?

MODIFICA: Il carattere sembra essere incluso nel testo, ma non nei campi, pertanto il carattere (codice a barre) non verrà stampato.

risposta

9

Sono quasi sicuro di avere una risposta ormai, ma forse altri vorrebbero avere una visione dettagliata della soluzione. Di seguito è riportato il codice java di esempio che ho utilizzato per incorporare i caratteri nel PDF generato (utile solo in alcuni casi, poiché le dimensioni dei documenti aumentano notevolmente). Come uno strumento gratuito per creare i moduli PDF, ho usato lo scrittore OpenOffice, con l'aggiunta di forme all'interno dei documenti e l'esportazione dei documenti in formato PDF:

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

sto incontrato quasi lo stesso problema e ho fatto lo stesso di te, ma non riesco ancora a incorporare il carattere per quel testo che inserisco usando Java, puoi dare un'occhiata a [la mia domanda] (http://stackoverflow.com/questions/34335481/how-to-embed -font-dopo-appiattimento-template-con-iText)? Grazie in anticipo! – Elderry

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

Questo dovrebbe fare il trucco.

Problemi correlati