1

我正在使用 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();
        }
    }
}

你能帮我找到一种方法让我的字符串显示为斜体吗?

4

2 回答 2

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);

在您的示例代码中,您基本上想要执行以下操作:

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);
于 2013-06-17T13:39:00.887 回答
1

您可以尝试使用以下代码。只需创建一个基本字体,然后创建一个字体,然后使用它。

BaseFont bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);
Font times = new Font(bfTimes, 12, Font.ITALIC, Color.RED);
于 2013-06-15T04:16:12.307 回答