我尝试让PdfSharp在Azure函数中运行 但我的字体有一些问题
// Create a new PDF document
PdfDocument document = new PdfDocument();
document.Info.Title = "Created with PDFsharp";
// Create an empty page
PdfPage page = document.AddPage();
// Get an XGraphics object for drawing
XGraphics gfx = XGraphics.FromPdfPage(page);
// Create a font
XFont font = new XFont("Verdana", 20, XFontStyle.BoldItalic);
// Draw the text
gfx.DrawString("Hello, World!", font, XBrushes.Black,
new XRect(0, 0, page.Width, page.Height),
XStringFormats.Center);
这也是PDFSharp示例页面中的代码...... 在字体行他给我以下错误......
Exception while executing function: Functions.PDFGenerationFunction. PdfSharp: Internal error. Font data could not retrieved.
我需要引用一些特别的东西吗?或者是否无法在Azure功能中执行此操作?
PDFSharp版本 - > “PDFsharp”:“1.32.3057”
和/或另一种在Azure功能中生成PDF文档的解决方案......
答案 0 :(得分:1)
这可能是Azure功能和Web应用程序运行的沙箱的问题。 查看此列表,了解可在沙箱中使用的已知PDF库。 https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#unsupported-frameworks
答案 1 :(得分:0)
PDF Sharp无法找到适合该功能以及Web API /应用程序的字体。因为它们没有提供标准字体。
要解决此问题,需要对PDF Sharp进行编码并提供基于PDFSharp接口IFontResolver
的 font resolver 。该解析器实际上将获取字体并将其作为流返回。
以下示例是我编写的解析器,用于从当前程序集中提取嵌入字体,例如:
PdfSharp.Fonts.GlobalFontSettings.FontResolver = new EmbeddedFontResolver();
关于如何在Stack Overflow上创建这样的解析器的最好例子是这个答案(这不是我的答案,但是我已经对其进行了修改,以更好地了解发生的情况)
Azure PDF Sharp not using Unicode font
如果该功能不允许您使用嵌入字体,则可以从Azure Blob加载它们。