我正在使用 iTextSharp 创建 PDF。
该过程的一部分将简单的文本添加到 PDF,另一部分创建相同文本的轮廓。
对于直接的文本方面,我使用 iTextSharp 中的 ShowTextAligned 方法;它需要 Basefont 并且无法设置样式。
对于轮廓,我创建一个 GDI GraphicsPath 来获取点,然后将其转换为 PDF 曲线/线条等。AddString 方法需要 Drawing.FontStyle
现在我的问题是我需要将 AddString 的样式设置为 BaseFont 使用的样式。即如果 Basefont 渲染为常规,我需要将 AddString 字体样式设置为常规
如何确定 ShowTextAligned 中的 BaseFont 使用什么样式?
更多信息:
我也尝试过使用ColumnText;它允许您设置 iTextSharp 字体及其样式。尽管使用此方法会产生以近似样式呈现的字体;即,通常为常规字体并设置为粗体的字体会产生稍微畸形的粗体字体。
编辑
当我说我需要将 BaseFont 传递给 ShowTextAligned 时,我的意思是,为了使用此方法,您必须首先使用 PdfContentByte 的 SetFontAndSize 设置字体和大小 - 正是此方法需要基本字体。
我知道我一定错过了一些明显的东西..我只是只见树木不见森林:)
最佳答案
您可以尝试预先定义基本字体并在整个 PDF 文档中使用它。
参见iTextSharp - Working with Fonts
示例代码:
BaseFont bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);
Font times = new Font(bfTimes, 12, Font.ITALIC, Color.RED);
以上几行创建了一个 BaseFont 对象并使用内置常量值来设置字体系列和编码。它还指定 false 将字体嵌入 PDF 文档中。使用 BaseFont 对象创建一个新的 Font 对象,并进一步设置字体大小(以点为单位)、样式和颜色 - 再次使用 iTextSharp 的常量作为这些值。
有关 BaseFont 的更多信息,请参阅其 class definition .
关于asp.net - 如何确定 iTextSharp Basefont 默认样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12694387/