C#以编程方式将字体添加到PDF

时间:2016-09-19 14:28:25

标签: c# pdf fonts ghostscript

我必须以编程方式向PDF添加(注册,嵌入)字体。 我尝试过很多像ghostscript或者itextsharp这样的实用工具,但我没有设法解决这个问题。

例如在这样的情况下: enter image description here

我想添加Courier-Bold并得到这种情况:

enter image description here

1 个答案:

答案 0 :(得分:0)

我刚刚通过NuGet使用iTextSharp v5.5.9创建了一个项目,并使用了以下代码:

    const string PdfLocation = @"C:\fakepath\output.pdf";

    static void Main(string[] args)
    {
        using (var pdfDoc = new Document())
        using (var fs = new FileStream(PdfLocation, FileMode.OpenOrCreate))
        using (var writer = PdfWriter.GetInstance(pdfDoc, fs))
        {
            pdfDoc.Open();

            var font = FontFactory.GetFont(FontFactory.COURIER_BOLD);

            // Doesn't use font
            var paragraph = new Paragraph("LINE 1");
            paragraph.Font = font;
            pdfDoc.Add(paragraph);

            // Doesn't use font
            var paragraph2 = new Paragraph();
            paragraph2.Add("LINE 2");
            paragraph2.Font = font;
            pdfDoc.Add(paragraph2);

            // Does use font
            var paragraph3 = new Paragraph();
            paragraph3.Font = font;
            paragraph3.Add("LINE 3"); // This must be done after setting the font
            pdfDoc.Add(paragraph3);

            var cb = writer.DirectContent;

            pdfDoc.Close();
        }
    }

我发现在编写文本之前需要先设置字体。以下代码输出具有以下属性的PDF。我没有得到TrueType要求,但也许这会让你朝着正确的方向前进。

我使用paragraphparagraph2的地方将使用默认字体Helvetica,因为我在设置文本后设置了字体。订单确实很重要!

这方面的文件肯定需要扩展......