gpt4 book ai didi

c# - 如何在Azure函数生成的PDF中显示文本

转载 作者:行者123 更新时间:2023-12-02 06:19:59 26 4
gpt4 key购买 nike

我正在尝试使用 DinkToPdf 通过 Azure 功能生成 PDF 。这就是我到目前为止所做的。

[FunctionName("GeneratePdf")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log,
ExecutionContext executionContext)
{
string name = await GetName(req);
return CreatePdf(name, executionContext);
}

private static ActionResult CreatePdf(string name, ExecutionContext executionContext)
{
var globalSettings = new GlobalSettings
{
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
Margins = new MarginSettings { Top = 10 },
};
var objectSettings = new ObjectSettings
{
PagesCount = true,
WebSettings = { DefaultEncoding = "utf-8" },
HtmlContent = $@"
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
Hello, ${name}
</body>
</html>",
};

var pdf = new HtmlToPdfDocument()
{
GlobalSettings = globalSettings,
Objects = { objectSettings }
};

byte[] pdfBytes = IocContainer.Resolve<IConverter>().Convert(pdf);
return new FileContentResult(pdfBytes, "application/pdf");
}

当我在本地测试该功能时,效果非常好。但是,部署到 Azure 后,它无法按预期工作。

主要问题是在 pdf 文本的位置出现了方框(例如见下文)。 enter image description here

此外,响应速度也慢得令人难以忍受。有没有办法改进/纠正这个问题?

其他信息:

  1. 我还使用 unity IOC 来解析 IConverter。类型注册如下所示:

    var container = new UnityContainer();
    container.RegisterType<IConverter>(
    new ContainerControlledLifetimeManager(),
    new InjectionFactory(c => new SynchronizedConverter(new PdfTools()))
    );
  2. 我尝试了其他几个 NuGet 包,例如 PdfSharp、MigraDoc、Select.HtmlToPdf.NetCore 等。但所有这些都依赖于 System.Drawing.Common,即无法在Azure功能中使用。

最佳答案

该问题似乎与 Azure Function 在“消耗”模式下的限制有关。如果您使用“应用程序模式”,它应该可以工作。请参阅the discussion below this Gist对于一些成功将 Azure Function 转换为“应用程序模式”的用户。

关于c# - 如何在Azure函数生成的PDF中显示文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53188629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com