在生产环境中测试,无水印。
随时随地满足您的需求。
获得30天的全功能产品。
几分钟内就能启动并运行。
在您的产品试用期间,全面访问我们的支持工程团队。
对于 .NET 应用程序,Quartz.NET 是一个广受欢迎的开源任务调度工具包。 它为程序员在预定时期、间隔或响应触发器时规划和执行工作、计划或流程奠定了坚实的基础。 Quartz.NET使.NET应用程序中复杂调度场景的构建变得更加容易,无论是发送通知、调度作业、生成报告还是完成定期维护活动。 Quartz.NET是创建小型应用程序和大型企业系统的完美作业调度系统。
Quartz.NET 的最新调度程序版本可与各种受支持的数据库提供商无缝集成,使开发人员能够使用便捷的扩展方法扩展其功能,同时确保作为托管服务可靠地执行任务。
通过将 Quartz.NET 与 IronPDF for .NET 集成,可以在 .NET 应用程序中构建具有强大 PDF 制作功能的可靠排程系统。 虽然 IronPDF 为 PDF 文档的创建、修改和显示提供了一整套工具,但 Quartz.NET 则提供了一个多功能、可靠的调度系统。 结合使用这些工具,开发人员就能将 PDF 创建操作自动化,将其作为工作流程的一部分或安排后台作业,从而提高应用程序的实用性和功能性。
Quartz.NET使程序员能够创建计划,以便程序在预定的间隔或时间(例如,每小时、每天、每30分钟)运行。 它与复杂的调度模式(如 cron 表达式)兼容,可对代码、作业和服务的执行时间进行精确控制。
在 Quartz.NET 中,作业可以通过各种触发器启动。 这些包括基于日历的触发器(例如,排除周末)、简单触发器(根据预定时间表运行)、作业触发器以及依赖于外部情况或事件的定制触发器。
Quartz.NET 具有以持久方式安排工作的功能,可将计划任务及其完成历史记录存储在数据库中。 保证作业计划对应用程序故障或重启的恢复能力,并实现作业集群的高可用性和可扩展性。
为了保证任务安全有效地完成,Quartz.NET 内置了并发控制工具。 为了控制作业执行的并发性,开发人员可以设置线程池、作业优先级和执行约束。
由于 Quartz.NET 支持作业链和依赖性管理,开发人员可以按指定顺序执行作业,并定义作业之间的关系。 这使得为后台作业、服务和程序创建复杂的协调情况成为可能。
为了优雅地管理故障,Quartz.NET 拥有错误处理和重试技术。 在出现临时故障或异常的情况下,开发人员可以设置重试策略和错误处理技术,以保证作业重试或重新安排。
由于 Quartz.NET 支持分布式作业调度中的集群,调度程序的多个实例可以在服务器集群中协调并执行任务。 通过实现水平可扩展性和容错性,确保在分布式环境中可靠地调度和执行作业。
Quartz.NET轻松与.NET生态系统接口,该生态系统包括消息系统(Rebus.NET、MassTransit)、日志框架(Serilog、NLog)和流行的依赖注入框架(Autofac、Microsoft.Extensions.DependencyInjection)。
针对您希望运行的任务,建立作业和触发器。 要完成的任务由上下文对象和作业类表示,作业的执行频率和时间由触发器决定。
public class MyJob : IJob
{
public async Task Execute(IJobExecutionContext context)
{
// Implement the logic for your job here
}
}
var job = JobBuilder.Create<MyJob>()
.WithIdentity("myJob", "group1")
.Build();
var trigger = TriggerBuilder.Create()
.WithIdentity("myTrigger", "group1")
.WithCronSchedule("0 0/5 * * * ?") // Run every 5 minutes
.Build();
public class MyJob : IJob
{
public async Task Execute(IJobExecutionContext context)
{
// Implement the logic for your job here
}
}
var job = JobBuilder.Create<MyJob>()
.WithIdentity("myJob", "group1")
.Build();
var trigger = TriggerBuilder.Create()
.WithIdentity("myTrigger", "group1")
.WithCronSchedule("0 0/5 * * * ?") // Run every 5 minutes
.Build();
Public Class MyJob
Implements IJob
Public Async Function Execute(ByVal context As IJobExecutionContext) As Task
' Implement the logic for your job here
End Function
End Class
Private job = JobBuilder.Create(Of MyJob)().WithIdentity("myJob", "group1").Build()
Private trigger = TriggerBuilder.Create().WithIdentity("myTrigger", "group1").WithCronSchedule("0 0/5 * * * ?").Build()
使用指定配置设置作业调度程序以调度后台任务、作业和触发器后,启动调度程序开始计划和执行作业。
var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();
await scheduler.ScheduleJob(job, trigger);
var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();
await scheduler.ScheduleJob(job, trigger);
Dim schedulerFactory = New StdSchedulerFactory()
Dim scheduler = Await schedulerFactory.GetScheduler()
Await scheduler.Start()
Await scheduler.ScheduleJob(job, trigger)
设置 Quartz.NET,将作业和触发器元数据存储在持久存储区(如数据库)中。 这样才能保证可靠性,使工作在应用程序重启后仍能继续。
将错误处理和重试逻辑纳入作业执行逻辑,以优雅的方式处理故障。 Quartz.NET 提供了管理异常和重试任务的内置方法。
在分布式环境中使用 Quartz.NET 时,为保证高可用性和可扩展性,请设置集群。 由于采用了集群技术,调度程序实例可以在服务器集群之间协作执行任务。
如果您的应用程序使用依赖注入框架,请设置 Quartz.NET 与您的依赖注入 (DI) 容器进行通信,以管理作业依赖项、配置和生命周期。
著名的 .NET 软件包 IronPDF for .NET 使在 .NET 程序中创建、修改和渲染 PDF 文档成为可能。 与 PDF 交互有大量的功能:从 HTML 内容、照片或未经处理的数据创建 PDF; 在已有的 PDF 文档中添加文本、图像和形状; 将 HTML 页面转换为 PDF; 以及从 PDF 中提取文本和图像。
IronPDF 在HTML 转 PDF转换方面表现出色,确保原始布局和样式的精确保留。 它非常适合从基于网络的内容(如报告、发票和文档)创建PDF。 IronPDF 支持 HTML 文件、URL 和原始 HTML 字符串,能够轻松生成高质量的 PDF 文档。
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class
IronPdf 的简洁性和用户友好性是其两大优势。 .NET具有用户友好的API和丰富的文档,开发人员可以轻松地在他们的.NET项目中生成PDF。 IronPdf 的速度和效率是使开发人员能够快速有效地制作高质量 PDF 文档的进一步特点。
要开始在控制台或 ASP.NET Core 应用程序中使用 IronPDF 与 Quartz.NET,可以使用 IronPDF 建立一个预定的后台作业,运行与 PDF 制作相关的任务。
首先,确保您已通过 Visual Studio 软件包管理器控制台使用以下命令在 .NET 项目中安装了 IronPDF 和 Quartz.NET 所需的 NuGet 软件包:
Install-Package Quartz
Install-Package IronPdf
Install-Package Quartz
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package Quartz Install-Package IronPdf
本节演示如何制作一个使用 IronPDF 创建 PDF 文档的 Quartz 作业。
public class PdfGenerationJob : IJob
{
public async Task Execute(IJobExecutionContext context)
{
// Generate PDF using IronPDF
var htmlContent = "<h1>Hello, IronPDF!</h1>";
var pdfRenderer = new IronPdf.HtmlToPdf();
var pdfDocument = pdfRenderer.RenderHtmlAsPdf(htmlContent);
// Save PDF to file or perform other actions
pdfDocument.SaveAs("output.pdf");
}
}
public class PdfGenerationJob : IJob
{
public async Task Execute(IJobExecutionContext context)
{
// Generate PDF using IronPDF
var htmlContent = "<h1>Hello, IronPDF!</h1>";
var pdfRenderer = new IronPdf.HtmlToPdf();
var pdfDocument = pdfRenderer.RenderHtmlAsPdf(htmlContent);
// Save PDF to file or perform other actions
pdfDocument.SaveAs("output.pdf");
}
}
Public Class PdfGenerationJob
Implements IJob
Public Async Function Execute(ByVal context As IJobExecutionContext) As Task
' Generate PDF using IronPDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1>"
Dim pdfRenderer = New IronPdf.HtmlToPdf()
Dim pdfDocument = pdfRenderer.RenderHtmlAsPdf(htmlContent)
' Save PDF to file or perform other actions
pdfDocument.SaveAs("output.pdf")
End Function
End Class
设置 Quartz.NET,利用触发器按预定计划运行 PDF 创建过程。
var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();
var job = JobBuilder.Create<PdfGenerationJob>()
.WithIdentity("pdfGenerationJob", "pdfGenerationGroup")
.Build();
var trigger = TriggerBuilder.Create()
.WithIdentity("pdfGenerationTrigger", "pdfGenerationGroup")
.WithSimpleSchedule(x => x
.WithIntervalInMinutes(30) // Run every 30 minutes
.RepeatForever())
.Build();
await scheduler.ScheduleJob(job, trigger);
var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();
var job = JobBuilder.Create<PdfGenerationJob>()
.WithIdentity("pdfGenerationJob", "pdfGenerationGroup")
.Build();
var trigger = TriggerBuilder.Create()
.WithIdentity("pdfGenerationTrigger", "pdfGenerationGroup")
.WithSimpleSchedule(x => x
.WithIntervalInMinutes(30) // Run every 30 minutes
.RepeatForever())
.Build();
await scheduler.ScheduleJob(job, trigger);
Dim schedulerFactory = New StdSchedulerFactory()
Dim scheduler = Await schedulerFactory.GetScheduler()
Await scheduler.Start()
Dim job = JobBuilder.Create(Of PdfGenerationJob)().WithIdentity("pdfGenerationJob", "pdfGenerationGroup").Build()
Dim trigger = TriggerBuilder.Create().WithIdentity("pdfGenerationTrigger", "pdfGenerationGroup").WithSimpleSchedule(Function(x) x.WithIntervalInMinutes(30).RepeatForever()).Build()
Await scheduler.ScheduleJob(job, trigger)
启动 Quartz 计划程序,开始执行计划任务:
// Start the scheduler
await scheduler.Start();
// Optionally, monitor scheduler for job execution
// Start the scheduler
await scheduler.Start();
// Optionally, monitor scheduler for job execution
' Start the scheduler
Await scheduler.Start()
' Optionally, monitor scheduler for job execution
以下是从上述代码生成的输出。
总之,Quartz.NET 和 IronPDF 的结合为在 .NET 应用程序中自动创建 PDF 相关操作提供了强有力的方法。 借助 Quartz.NET 功能强大、适应性强的调度系统,开发人员可以创建工作和触发器,在预定的时间间隔或持续时间内执行活动。 IronPdf 则为开发人员提供了创建和处理 PDF 文档所需的所有工具。 利用 HTML、图形或原始数据,开发人员可以创建出专业外观的 PDF。
通过将 IronPDF 的 PDF 生成功能与 Quartz.NET 的调度功能集成,开发人员可以在分布式应用程序中自动执行典型的 PDF 生成操作,例如在预定的时间间隔或根据触发器的反应创建报告、发票或文档。 这种集成通过简化文档生成工作流程、提高生产率和减少手工劳动,使开发人员能够更轻松地制作并向客户或顾客发送高质量的 PDF 文档。
IronPdf 价格合理,作为软件包的一部分购买时可获得终身许可。 由于此软件包仅需$749,这是对多个系统的一次性收费,因此它提供了卓越的价值。 它为许可证持有者提供全天候在线工程协助。 要了解更多关于Iron Software制造的产品,请访问Iron Software网站上的Iron Software产品页面。