2013-09-30 4 views
0

У меня есть PDF, где я добавляю TextFields.iTextSharp - содержимое поля PDF становится невидимым

var txtFld = new TextField(stamper.Writer, new Rectangle(cRightX - cWidthX, cTopY3, cRightX, cTopY), FieldNameProtocol) { Font = bf, FontSize = cHeaderFontSize, Alignment = Element.ALIGN_RIGHT, Options = PdfFormField.FF_MULTILINE }; 
    stamper.AddAnnotation(txtFld.GetTextField(), 1); 

«бф» выше шрифт Unicode, который встраивается в PDF:

BaseFont bf = BaseFont.CreateFont(UnicodeFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); // Create a Unicode font to write in Greek... 

Позже, на меня заполнить эти поля с греческим текстом.

var acrof = stamper.AcroFields; 
    acrof.SetField(fieldName, field.Value/*, field.Value*/); // Set the text of the form field. 
    acrof.SetFieldProperty(fieldName, "setfflags", PdfFormField.FF_READ_ONLY, null); // Make it readonly. 

Когда я рассматриваю PDF, большую часть времени текст отсутствует, и если я нажимаю на (невидимом) TextField в Acrobat, то текст становится видимым (пока он не теряет фокус снова).

Любая идея, что здесь происходит? Я также пробовал использовать не встроенный шрифт, но я получаю то же самое (хотя я все еще, кажется, получаю встроенные шрифты в PDF, похожие на шрифт, который я использую). Я не знаю, не пропал ли я.

+1

Посмотрите это, его .Net, но нужно легко перевести на Java, http://stackoverflow.com/a/18445315/231316 –

+0

@ChrisHaas: Спасибо! Я попробую в ближайшее время и дам вам знать, как это происходит. (На самом деле я тоже работаю над .NET). – user2173353

+0

Я пробовал обе эти строки кода, и ничего не меняется. Я не знаю, если есть что делать с тем, что я объединять PDF с другим PDF-документом, чтобы получить окончательный PDF ... – user2173353

ответ

0

Казалось, что я делал следующее в неправильном порядке (следующий правильный):

acrof.SetFieldProperty(field.Name, "setfflags", PdfFormField.FF_READ_ONLY, null); // Make it readonly. 
acrof.SetFieldProperty(field.Name, "textfont", bf, null); 
acrof.SetField(field.Name, field.Value/*, field.Value*/); // Set the text of the form field. 

По крайней мере, шляпа я думаю, что это было неправильно. Я внес много изменений.

Смежные вопросы