我有一个PDF,我在其中添加一些TextFields。
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);
上面的'bf'是嵌入PDF中的Unicode字体:
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时,大多数时候文本丢失,如果我在Acrobat中单击(不可见)TextField,则文本变为可见(直到它再次失去焦点)。
知道这里发生了什么吗? 我也试过使用非嵌入式字体,但我得到了同样的东西(虽然我似乎仍然得到PDF格式的嵌入字体,类似于我使用的字体)。我不知道我是不是想错了......
答案 0 :(得分: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.
至少我认为这是错误的。 我做了很多改变。