我正在使用iTextSharp创建一些pdf文件。这些文档有几个页面,除了最后一个页面之外,我们需要有一个用斜体字体书写的文本。
这是我的代码使用PdfTemplate,它可以工作,但我无法设置字符串Italic:
public override void OnCloseDocument(PdfWriter writer, Document document)
{
base.OnCloseDocument(writer, document);
template.BeginText();
template.SetFontAndSize(arial, 11);
template.SetTextMatrix(0, 0);
template.ShowText("" + (writer.PageNumber - 1));
template.EndText();
int index = 0;
foreach (PdfTemplate temp in templates)
{
if ((++index) < (writer.PageNumber-1))
{
temp.BeginText();
temp.SetFontAndSize(arial, 11);
temp.SetTextRenderingMode(0);
temp.SetTextMatrix(0, 0);
temp.ShowText("- Continued -");
temp.EndText();
}
}
}
请您帮我找一种方法让我的字符串显示为Italic?
答案 0 :(得分:5)
粗体,斜体,常规都是碰巧有相似名称的不同字体。 iText有一些快捷方式可以在内置字体之间进行转换(如Md.Nazrul Islam所示),但如果你指定自己的字体,则需要提供各种权重和样式。对于Arial,您需要注册并使用斜体字体ariali.ttf
。
//Paths to our font files
var arial_regular_path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "arial.ttf");
var arial_italic_path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ariali.ttf");
//Create base fonts
var arial_regular_base = BaseFont.CreateFont(arial_regular_path, BaseFont.IDENTITY_H, false);
var arial_italic_base = BaseFont.CreateFont(arial_italic_path, BaseFont.IDENTITY_H, false);
//Create sized-fonts using the bases above
var arial_regular = new iTextSharp.text.Font(arial_regular_base, 12);
var arial_italic = new iTextSharp.text.Font(arial_italic_base, 12);
//Test paragraph
var p = new Paragraph();
p.Add(new Chunk("This is a test using an ", arial_regular));
p.Add(new Chunk("italic", arial_italic));
p.Add(new Chunk(" font", arial_regular));
doc.Add(p);
在您的示例代码中,您基本上想要这样做:
var arial_italic_path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ariali.ttf");
var arial_italic_base = BaseFont.CreateFont(arial_italic_path, BaseFont.IDENTITY_H, false);
temp.SetFontAndSize(arial_italic_base, 11);
答案 1 :(得分:1)
您可以尝试使用以下代码。只需创建 基本字体 ,然后创建 字体 ,然后再使用它。
BaseFont bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);
Font times = new Font(bfTimes, 12, Font.ITALIC, Color.RED);