c# - 如何将 System.Drawing.Font 转换为 iTextSharp.text.pdf.BaseFont?
问题描述
我想在一些pdf上添加水印。我使用 iTextSharp 来完成这个功能。但是如何将字体转换为 BaseFont?我搜索了很多,没有任何帮助。
font = new System.Drawing.Font("cambria", 26f, FontStyle.Bold);
BaseFont basefont = BaseFont.CreateFont(font);
解决方案
现在我找到了转换的方法...
private static BaseFont ConvertFont2BaseFont(System.Drawing.Font _font)
{
var fontFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.Fonts);
if(!FontFactory.IsRegistered(_font.Name)) FontFactory.RegisterDirectory(fontFolderPath);
BaseFont baseFont = FontFactory.GetFont(_font.Name, _font.Size, ConvertFontStyle(_font.Style)).BaseFont;
return baseFont;
}
private static int ConvertFontStyle(FontStyle _fontStyle)
{
int style = -1;
if((_fontStyle & FontStyle.Regular) != 0)
{
style |= iTextSharp.text.Font.NORMAL;
}
if((_fontStyle & FontStyle.Bold) != 0)
{
style |= iTextSharp.text.Font.BOLD;
}
if((_fontStyle & FontStyle.Italic) != 0)
{
style |= iTextSharp.text.Font.ITALIC;
}
if((_fontStyle & FontStyle.Underline) != 0)
{
style |= iTextSharp.text.Font.UNDERLINE;
}
if((_fontStyle & FontStyle.Strikeout) != 0)
{
style |= iTextSharp.text.Font.STRIKETHRU;
}
return style;
}
推荐阅读
- xcode - 出现在故事板选择下拉列表中的资产
- javascript - 在Javascript中制作水平滚动菜单
- spring - 如何在 CDI bean 中调用服务类接口
- android - 如何从firebase db android中的2个表格中检索数据?
- javascript - Reactjs将不同的属性传递给具有相似按钮的相同功能?
- bluetooth - Gatttool 在几秒钟后停止接收通知(不是因为断开连接)
- google-cloud-platform - 云函数中如何获取快照的ID?
- typescript - 字典中的打字稿索引字符串类型,它是实现中键的联合类型
- php - PHPUnit - 奇怪的行为(组运行)
- apache-kafka - Kafka 精确一次处理 - 您是否也需要您的流应用程序来生成 kafka 主题?