1

我正在使用 iTextSharp 创建 PDF。

该过程的一部分向 PDF 添加简单的文本,另一部分创建相同文本的轮廓。

对于直截了当的文本方面,我在 iTextSharp 中使用 ShowTextAligned 方法;这需要 Basefont 并且无法设置样式。

对于大纲,我正在创建一个 GDI GraphicsPath 来获取点,然后将其转换为 PDF 曲线/线条等。 AddString 方法需要 Drawing.FontStyle

现在我的问题是我需要将 AddString 的样式设置为 BaseFont 使用的样式。IE 如果 Basefont 呈现常规,我需要将 AddString 字体样式设置为常规

如何确定 ShowTextAligned 中 BaseFont 使用的样式?

更多信息:

我也尝试过使用 ColumnText;它允许您设置 iTextSharp 字体及其样式。尽管使用此方法会导致以近似样式呈现的字体;IE 字体通常为常规字体并设置为粗体,会产生略微畸形的粗体字体。

编辑

当我说我需要将 BaseFont 传递给 ShowTextAligned 时,我的意思是,为了使用此方法,您必须首先使用 PdfContentByte 的 SetFontAndSize 设置字体和大小 - 正是这种方法需要 BaseFont。

我知道我一定遗漏了一些明显的东西..我只是看不到树木的树木:)

4

2 回答 2

2

您可以尝试预先定义您的基本字体并在整个 PDF 文档中使用它。

请参阅iTextSharp - 使用字体

示例代码:

BaseFont bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);

Font times = new Font(bfTimes, 12, Font.ITALIC, Color.RED);

上面的行创建了一个 BaseFont 对象并使用内置的常量值来设置字体系列和编码。它还为在 PDF 文档中嵌入字体指定 false。使用 BaseFont 对象创建一个新的 Font 对象,并进一步设置以磅为单位的字体大小、样式和颜色 - 再次使用 iTextSharp 的这些值的常量。

有关 BaseFont 的更多信息,请参阅其类定义

于 2012-10-02T16:36:23.803 回答
0

您可以使用 SetColorFill 方法。像这样

content.BeginText();
BaseFont baseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252,BaseFont.NOT_EMBEDDED);
content.SetFontAndSizebaseFont, 12);
BaseColor baseColor = new BaseColor(255, 0, 0);
content.SetColorFill(baseColor);
//or use predefined colors 
content.SetColorFill(BaseColor.RED);
// use ShowTextAligned method
content.EndText();
于 2015-06-22T13:07:18.503 回答