对于textfield对象,我想将样式更改为粗体。我已经创建了arial字体,因为它不是BaseFont对象的默认字体。显然,TextField对象仅将BaseFont作为有效字体。我想知道如何将我分配给文本字段的字体样式更改为粗体。有没有办法做到这一点?这是我到目前为止的代码
TextField txtNewField = new TextField(stamp.Writer, new Rectangle(1, 1, 75, 25), "TxtField");
BaseFont arial = BaseFont.CreateFont(@"c:\windows\fonts\arial.ttf", BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
txtNewField.FontSize = 8;
txtNewField.Font = arial;
提前谢谢!
答案 0 :(得分:5)
您是否尝试将arialbd.ttf
指定为字体名称?我认为无论如何都会产生更好的效果,因为粗体字会被调整。
(我不确定为什么你不能只为TextField指定一个Font
,诚然......)
答案 1 :(得分:0)
我不确定这是否在所有情况下都行得通,但是我创建了此帮助程序方法来添加表单字段。它抽象出了计算右上角X和Y值的方法,还处理了使字体加粗的问题。
它对调用者隐藏了一些讨厌的实现细节。
@ jon-skeet可以帮助我解决粗体字体问题!
private static void AddFormField(PdfWriter pdfWriter,
float lowerLeftX,
float lowerLeftY,
float width,
float height,
string fieldName,
Font font)
{
var upperRightX = lowerLeftX + width;
var upperRightY = lowerLeftY - height;
var fontName = font.Style == Font.BOLD ? $"{font.Familyname}-Bold" : font.Familyname;
var baseFont = BaseFont.CreateFont(fontName, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
var box = new Rectangle(lowerLeftX, lowerLeftY, upperRightX, upperRightY);
var field = new TextField(pdfWriter, box, fieldName)
{
Font = baseFont,
FontSize = font.Size
};
pdfWriter.AddAnnotation(field.GetTextField());
}