我作为 QA 工程师在 IronSoftware 工作,发现自己能够就这个关于 IronPDF Nuget Packages for .NET 的问题提供建议。
哪个 Azure 计划:在 Azure 上呈现 PDF 文件
对于批量生成 Pdf 文件,我强烈建议在 Azure 上的 .NET 应用程序中使用 IronPdf,我强烈建议使用基本 B1 层或更高层,或者高级计划。Free 和 Shared 层以及 Consumption Plan 不适用于 PDF 渲染。这样做的原因是它使用完整的网络浏览器从 HTML 代码创建 PDF 文件。
我们需要提供足够的资源来处理每个渲染,就像您的浏览器处理任何网页一样——它可能需要一两秒钟。IronPDF 库适用于 Azure WebApps、Functions 和 WebJobs。它适用于 Linux 和 Windows 变体,尽管我会推荐 Windows 变体 Functions 和 WebApps,因为它们经过了更好的测试并且更易于安装。
这仅仅是因为 Linux 对 .NET 的支持较新。Windows 的历史更长,并且更容易为 PDF 生成器用例配置权限!
警告:将 SVG 字体渲染到 PDF 文档中
我们发现,使用 C# 生成 PDF 文件的一个已知限制是 Azure 托管平台不支持服务器在其共享的 Web 应用程序层中加载 SVG 字体,例如 Google 字体。这是因为出于安全原因,这些共享主机平台不允许访问 Windows GDI+ 图形对象。然而,这些限制在 Linux 或 Docker 容器中的 Windows 中不存在。Docker 容器可能是一个很好的方法。
参考:https ://ironpdf.com/docs/questions/azure/
多线程 PDF 生成
在编写 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
}
通过更新到 IronPDF 2021.9 及更高版本可以找到解决方案:
// 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 !!
}
简而言之:删除旧的 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>");
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 个绿色单元和集成测试对其进行了测试