2009-03-09 7 views
12

У меня есть pdf, который был создан с использованием конструктора форм Foxit. В моей системе проектирования у меня установлен шрифт штрих-кода. Шрифт штрих-кода используется в одном из AcroFields. Похоже, что foxit не вставляет шрифт в документ.Вставить шрифт в PDF

У меня также есть клиенты, у которых нет шрифта штрих-кода, установленного на их компьютерах, и поэтому я хотел бы встроить шрифт в PDF. Есть ли способ для меня встроить шрифт, который используется в AcroFields в PDF, используя iText?

EDIT: Шрифт, кажется, включен в текст, но не поля, поэтому шрифт (штрих-код) не будет печатать.

ответ

9

Я почти уверен, что вы получили ответ, но, возможно, другие хотели бы получить подробный обзор решения. Ниже приведен пример кода Java, который я использовал для встраивания шрифтов в сгенерированный PDF (полезно только в некоторых случаях, поскольку размер документов резко возрастает). Как свободный инструмент для создания форм PDF, я использовал писатель OpenOffice, добавив формы внутри документов и экспорт документов в виде 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

Я встретил почти та же проблема, и я сделал то же, что и вы, но я все еще не могу вставлять шрифт для текста, который я вводил с помощью Java, можете ли вы взглянуть на [мой вопрос] (http://stackoverflow.com/questions/34335481/how-to-embed -font-после-уплощение-шаблона с использованием-IText)? Заранее спасибо! – Elderry

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

Это должно сделать трюк.