Ste*_*nie 6 .net c# pdf azure ironpdf
我正在使用 IronPDF 作为我们的 PDF 渲染引擎编写的 Azure Web 应用程序中成功生成 PDF 文档。\xc2\xa0 用例是用 C# 生成财务报表和发票的 PDF,作为更广泛的封闭业务应用程序的一部分。
\n本地开发中的一切都运行良好,HTML 到 PDF 文档生成器功能正是我们所需要的。将 PDF 生成器投入使用后,我们注意到渲染时间很慢。
\n\xc2\xa0这些有时会级联到请求队列中积压的 PDF,当等待时间超过 30 秒时,可能会导致 Web 请求超时。我们的代码并不罕见,并且仔细遵循 Ironpdf C# PDF 创建教程中的步骤:https ://ironpdf.com/tutorials/html-to-pdf/
\nPM> Install-Package IronPdf
var Renderer = new IronPdf.HtmlToPdf();\nRenderer.RenderHtmlAsPdf(templateHTML);\nRun Code Online (Sandbox Code Playgroud)\ntemplateHTML对于每个渲染都是唯一的,并且包含 CSS 和图像的链接。
\n我们的开发人员如何增强 PDF 渲染性能并为 IronPdf.HtmlToPdf PDF 生成器类启用多线程?
\n在 .NET 中的 Azure 上使用 IronPdf 在 C# 中生成 PDF 文件是否存在已知限制?
\n需要明确的是,我并不是在征求有关其他第 3 方 C# PDF 库的建议,只是征求如何最好地实施和优化我们选择的解决方案。
\n为了在明确的背景下澄清问题:
\ndar*_*ren 13
我在 IronSoftware 担任 QA 工程师,发现自己能够针对有关 IronPDF Nuget Packages for .NET 的问题提供独特的建议。
对于批量生成 Pdf 文件、Azure 上的 .NET 应用程序中的 IronPdf,我强烈建议使用基本 B1 层或更高层或高级计划。免费和共享层以及消费计划不适合 PDF 渲染。原因是它使用完整的网络浏览器从 HTML 代码创建 PDF 文件。
我们需要提供足够的资源来处理每个渲染,就像您的浏览器处理任何网页一样 - 这可能需要一两秒钟。IronPDF 库适用于 Azure WebApps、Functions 和 WebJobs。它可以在 Linux 和 Windows 变体中运行,但我会推荐 Windows 变体 Functions 和 WebApps,因为它们经过了更好的测试并且更易于安装。
这只是因为 Linux 对 .NET 的支持更新。Windows 具有更长的历史,并且更容易配置 PDF 生成器用例的权限!
我们发现使用 C# 生成 PDF 文件的一个已知限制是 Azure 托管平台不支持在其共享 Web 应用程序层中加载 SVG 字体(例如 Google Fonts)的服务器。这是因为出于安全原因,这些共享托管平台不允许访问 Windows GDI+ 图形对象。然而,这些限制在 Docker 容器中的 Linux 或 Windows 中不存在。Docker 容器可能是一个很好的选择。
参考: https: //ironpdf.com/docs/questions/azure/
在撰写本文时,IronPdf 是线程安全的,但不是真正的多线程。
每个 .NET 进程一次只能呈现一个 PDF 文件。直到 2021 年,这一直是 PDF 文档创建性能的一个主要缺点。例如,即使它被并行调用以同时生成 pdf 文档,它也会逐一运行。
// using System.Linq;
// using System.Threading.Tasks;
var Renderer = new IronPdf.HtmlToPdf();
// Where Htmls is an iEnumerable of HTML strings
Parallel.ForEach(Htmls, html =>
{
Renderer.RenderHtmlAsPdf(html);
// works but not faster than formal foreach
}
Run Code Online (Sandbox Code Playgroud)
通过 Nuget 安装它https://www.nuget.org/packages/IronPdf
API 文档:https://ironpdf.com/object-reference/api/(C# 和 VB.NET)
// PM> Install-Package IronPdf
// using System.Linq;
// using System.Threading.Tasks;IronPdf.Installation.DefaultRenderingEngine = IronPdf.Rendering.PdfRenderingEngine.Chrome;var Renderer = new IronPdf.HtmlToPdf();Parallel.ForEach(Htmls, html =>
{
Renderer.RenderHtmlAsPdf(html);
// works in multiple threads !!
}
Run Code Online (Sandbox Code Playgroud)
简而言之:删除旧的 IronPDF Nuget 包并将其替换为 IronPDF 2021.9 或更高版本
IronPd 2021.9 是我们的 .NET PDF 渲染技术的彻底重建:
提供轻松的多线程和异步,使用任意数量的 CPU 核心。对于 SAAS 和高负载应用程序,这可能会快一个数量级;优于直接使用浏览器和网络驱动程序。您还可以使用新的 2021 API:
// using IronPdf;
// PM> Install-Package IronPdf
ChromePdfRenderer Renderer = new ChromePdfRenderer();
Renderer.RenderingOptions.FitToPaper = true;
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
Renderer.RenderingOptions.PrintHtmlBackgrounds = true;
Renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
var doc = await Renderer.RenderHtmlAsPdfAsync ("<h1>Hello world!</h1>");
Run Code Online (Sandbox Code Playgroud)
Azure 是新 IronPDF 渲染器的一等公民,该渲染器基于最新的“Blink!” HTML 字符串到 pdf 文件渲染!从 Chrome 相同的 PDF 创建或增强的渲染设置中进行选择 - 我们发现这比 Chrome 更准确且更易于编码。
我们还推荐此路线,因为它在 C# PDF 生成器中添加了第 508 节可访问性合规性:使用 PDF(UA) 标记的 PDF 标准生成可访问的 PDF。
IronPDF 团队维护并改进了对以下内容的全面支持:.Net 5、Core 和 Framework 4.0+ 支持。我们还在当前版本 (2021.9) 中通过 1156 个绿色单元和集成测试对其进行了测试
通常您希望通过将请求写入存储队列来使其异步,并立即返回。使用Azure功能(高度可扩展)来处理来自队列的请求。
根据应用程序的类型,您可以使用 signalR 通道通知 UI pdf 生成已完成