使用PdfWriter和iTextSharp以及SetFontAndSize函数的斜体文本

Edi*_*ian 1 c# pdf itextsharp

我正在使用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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

你能不能帮我找到一种方法让我的字符串显示为Italic?

Chr*_*aas 6

粗体,斜体,常规都是碰巧有相似名称的不同字体.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);
Run Code Online (Sandbox Code Playgroud)

在您的示例代码中,您基本上想要:

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);
Run Code Online (Sandbox Code Playgroud)