我需要从服务器端(dotnet core 2)上的 HTML 创建一个 pdf 文件,并将其作为电子邮件的附件发送。我创建了一个节点服务(createPdf.js),如下所示,并将其保存在解决方案中的本地目录(NodeService)中 -
module.exports = function (callback, html, outputFilePath) {
var pdf = require('html-pdf');
var options = { format: 'A3', orientation: 'portrait' };
pdf.create(html, options)
.toFile(outputFilePath, function (err, res) {
if (err)
return callback(null, false);
callback(null, true);
});
}
我触发这个功能如下 -
public static async Task<bool> GeneratePdf(INodeServices nodeService, string html, string outputFilePath)
{
string pdfGenerationNodeService = Path.Combine(Directory.GetCurrentDirectory(), "NodeService", "createPdf.js");
try
{
return await nodeService.InvokeAsync<bool>(pdfGenerationNodeService, html, outputFilePath);
}
catch (Exception ex)
{
throw;
}
}
从控制器调用此方法 -
public async Task<IActionResult> SendQuotationToHospitalAsync([FromServices]INodeServices nodeService, int id)
{
...
bool isAdminPdfGenerationSuccess = await PdfHelperService.GeneratePdf(nodeService, htmlContent, filePath);
...
}
我还在StartUp.cs中注册了节点服务-
services.AddNodeServices();
当我在调试模式下触发该功能时,它工作正常并且正在生成 pdf 文件。但是,一旦我在服务器上部署应用程序,节点功能就不会被触发。有关该问题的任何帮助都将非常有帮助。谢谢。
PS 因为它是一个家庭项目,我买不起任何高级 HTML 到 PDF 转换器