如何在创建时使用iText设置字段的字体,如下所示:
PdfReader pdf = new PdfReader("C:\\foo.pdf");
FileStream outs = new FileStream("C:\\bar.pdf", FileMode.Create,
FileAccess.Write);
PdfStamper stamps = new PdfStamper(pdf, outs);
PdfFormField field = PdfFormField.CreateTextField(stamps.Writer,
false, false, 50);
field.SetWidget(new iTextSharp.text.Rectangle(50, 400, 500, 600),
PdfAnnotation.HIGHLIGHT_INVERT);
field.SetFieldFlags(PdfAnnotation.FLAGS_PRINT);
field.FieldName = "my_field";
stamps.AddAnnotation(field, 1);
stamps.Close();
字符串
我已经有了一个BaseFont的引用,并希望设置字段字体,以便当我打开MySQL并检查表单字段时,外观属性将显示此字体。
3条答案
按热度按时间cyej8jka1#
请看一下TextField类的代码,更具体地说,在getTextField()方法中。你会看到字体是在默认外观(DA)中定义的。在该方法中进行了许多操作。外观被创建,BaseFont被添加。
要么您必须编写自己的实现来实现在TextField类中执行的操作,要么您必须切换到使用TextField类。
有没有一个具体的原因,你避免文本字段?
zzwlnbp82#
您还有一个问题:
我没有得到的字体设置在该领域时,我在谷歌浏览器,但我希望它说Arial而不是SEBJIU+ArialMT
这是我使用的代码:BaseFont arial = BaseFont. NETFont(“c:\windows\fonts\arial.ttf”,BaseFont.CP1252,BaseFont.NOT_EMBEDDED);
我有两句话要对你说:
我看到你没有嵌入字体,但是前缀告诉我你嵌入了一个子集。也许还有其他的东西在起作用。在某些情况下,嵌入的参数被忽略了。这是有文档记录的。例如,标准类型1字体从不嵌入(即使你使用BaseFont.EMBEDDED);使用编码IDENTITY-H或IDENTITY-V的字体总是嵌入的。
syqv5f0l3#
BaseFont micrBaseFont = BaseFont. NETFont(“c:/windows/fonts/MicrEncoding-ZEDJ.ttf”,BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
stamper.AcroFields.SetFieldProperty(fieldName,“textfont”,micrBaseFont,null);