无法在 iText7 中使用自定义字体 Visual Studio
Unable to use custom font in iText7 Visual Studio
我正在 Visual Studio 上创建一个应用程序,并添加了一个使用 iText7 在按钮单击事件时创建 PDF 的功能。我正在使用我的资源中的自定义字体,并且在通过 visual studio 进行调试时使用路径“../../Resources.[FontName].ttf”可以正常工作,但是当我 运行应用程序文件我收到一条错误消息 the resource or file cannot be found
。我认为这是因为该文件存储在 .resx 文件中,无法通过 visual studio 之外的路径(如上所示)访问。我可以使用什么路径访问字体文件,以便它通过交付的应用程序在 visual studio 之外工作?
您可以使用PdfFontFactory.CreateFont
方法加载字体文件。
这是一个代码示例,您可以参考。
PdfFont font = PdfFontFactory.CreateFont("E:\AmaticSC-Regular.ttf");
PdfWriter writer = new PdfWriter("E:\demo.pdf");
PdfDocument pdf = new PdfDocument(writer);
Document document = new Document(pdf);
Paragraph header = new Paragraph("HEADER").SetFont(font).SetFontSize(50);
document.Add(header);
document.Close();
结果:
我想我会分享我用于我自己的问题的解决方案,以防有人遇到同样的问题。
比较简单。我将字体 .ttf 文件添加到我的资源中。它必须存储为 byte[] 文件。因此,转到您的 Resources.Designer.cs 文件并确保它看起来像这样:
internal static byte[] BebasNeueRegular {
get {
object obj = ResourceManager.GetObject("BebasNeueRegular", resourceCulture);
return ((byte[])(obj));
}
}
然后在您创建 PDF 的 class 中,使用 iText 的 PdfFontFactory
:
设置字体
PdfFont font = PdfFontFactory.CreateFont(Properties.Resources.BebasNeueRegular, true);
doc.SetFont(font);
我正在 Visual Studio 上创建一个应用程序,并添加了一个使用 iText7 在按钮单击事件时创建 PDF 的功能。我正在使用我的资源中的自定义字体,并且在通过 visual studio 进行调试时使用路径“../../Resources.[FontName].ttf”可以正常工作,但是当我 运行应用程序文件我收到一条错误消息 the resource or file cannot be found
。我认为这是因为该文件存储在 .resx 文件中,无法通过 visual studio 之外的路径(如上所示)访问。我可以使用什么路径访问字体文件,以便它通过交付的应用程序在 visual studio 之外工作?
您可以使用PdfFontFactory.CreateFont
方法加载字体文件。
这是一个代码示例,您可以参考。
PdfFont font = PdfFontFactory.CreateFont("E:\AmaticSC-Regular.ttf");
PdfWriter writer = new PdfWriter("E:\demo.pdf");
PdfDocument pdf = new PdfDocument(writer);
Document document = new Document(pdf);
Paragraph header = new Paragraph("HEADER").SetFont(font).SetFontSize(50);
document.Add(header);
document.Close();
结果:
我想我会分享我用于我自己的问题的解决方案,以防有人遇到同样的问题。
比较简单。我将字体 .ttf 文件添加到我的资源中。它必须存储为 byte[] 文件。因此,转到您的 Resources.Designer.cs 文件并确保它看起来像这样:
internal static byte[] BebasNeueRegular {
get {
object obj = ResourceManager.GetObject("BebasNeueRegular", resourceCulture);
return ((byte[])(obj));
}
}
然后在您创建 PDF 的 class 中,使用 iText 的 PdfFontFactory
:
PdfFont font = PdfFontFactory.CreateFont(Properties.Resources.BebasNeueRegular, true);
doc.SetFont(font);