我必须以编程方式向PDF添加(注册,嵌入)字体。 我尝试过很多像ghostscript或者itextsharp这样的实用工具,但我没有设法解决这个问题。
我想添加Courier-Bold并得到这种情况:
答案 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要求,但也许这会让你朝着正确的方向前进。
我使用paragraph
和paragraph2
的地方将使用默认字体Helvetica,因为我在设置文本后设置了字体。订单确实很重要!
这方面的文件肯定需要扩展......