Javascript 在Node JS/Express Web应用程序中生成PDF报告

Javascript 在Node JS/Express Web应用程序中生成PDF报告,javascript,jquery,node.js,express,handlebars.js,Javascript,Jquery,Node.js,Express,Handlebars.js,我是一个新手,尝试使用NodeJS/Express和handlebar构建一个web应用程序,以满足模板需求 应用程序的一部分用于生成销售发票。我已经编写了一个Handlebar模板和一些javascript代码来处理项目的添加/删除以及计算总数等,效果很好 需要在NodeJS服务器上生成此发票的PDF表单,该表单包含在客户端添加的动态内容 我不确定如何继续实施这一计划。我已经评估了客户端PDF生成选项,但它不适合我的用例 当客户端html页面中存在动态元素时,是否可以在服务器端生成pdf 该应

我是一个新手,尝试使用NodeJS/Express和handlebar构建一个web应用程序,以满足模板需求

应用程序的一部分用于生成销售发票。我已经编写了一个Handlebar模板和一些javascript代码来处理项目的添加/删除以及计算总数等,效果很好

需要在NodeJS服务器上生成此发票的PDF表单,该表单包含在客户端添加的动态内容

我不确定如何继续实施这一计划。我已经评估了客户端PDF生成选项,但它不适合我的用例

当客户端html页面中存在动态元素时,是否可以在服务器端生成pdf

该应用程序与此链接中的应用程序类似:

代码的动态部分如下所示:

//添加额外的表行

var i=$('table tr').length;
$(".addmore").on('click',function(){
    html = '<tr>';
    html += '<td><input class="case" type="checkbox"/></td>';
    html += '<td><input type="text" data-type="productCode" name="itemNo[]" id="itemNo_'+i+'" class="form-control autocomplete_txt" autocomplete="off"></td>';
    html += '<td><input type="text" data-type="productName" name="itemName[]" id="itemName_'+i+'" class="form-control autocomplete_txt" autocomplete="off"></td>';
    html += '<td><input type="text" name="price[]" id="price_'+i+'" class="form-control changesNo" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;"></td>';
    html += '<td><input type="text" name="quantity[]" id="quantity_'+i+'" class="form-control changesNo" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;"></td>';
    html += '<td><input type="text" name="total[]" id="total_'+i+'" class="form-control totalLinePrice" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;"></td>';
    html += '</tr>';
    $('table').append(html);
    i++;
});
$(".delete").on('click', function() {
    $('.case:checkbox:checked').parents("tr").remove();
    $('#check_all').prop("checked", false); 
});

被视为您正在使用express,并且能够使用此数据创建网页

我会用


这可用于将您的网页转换为PDF,您还可以使用CSS属性
之后控制分页符。。等等。

有一个名为github的库,它与您正在寻找的功能非常接近

它与AWS lambda和nodejs一起工作。它使用无服务器chrome访问您的网站并截图或将整个网站保存为PDF文件并显示PDF文件。部署非常简单,并且使用无服务器框架。我在客户的AWS帐户上部署了github库

下面是您在部署后获得的演示链接

https://1wphj1kzch.execute-api.ap-southeast-1.amazonaws.com/dev/pdf?url=http://www.gmail.com
更换
http://www.gmail.com
使用您选择的网站链接。它等待网站完全加载,然后截图。您可以部署它并使用上面生成的链接获取屏幕截图并保存它们,也可以使用另一个lambda函数将PDF保存到AWS上的S3存储桶中


最重要的是,如果您是AWS新手,每月可以免费执行400000次lambda。

将数据发送到服务器(AJAX),然后使用PDFKit。@Chris G:谢谢您的快速回复。您的意思是我应该将这些动态添加的行中的唯一数据或整个html页面发送到服务器以生成pdf吗?请查看PDFKit,然后为您自己找出最佳路径。谢谢您的回复。我认为phantom-html2pdf()在这种情况下可能对我有用,因为它支持css。我会给它一个机会,让你们知道它是如何运行的。@UmashankarVarma我指出的幻影包当然也支持CSS。它们都在内部使用预先构建的phantomjs,而这反过来又在运行phantomjs。基本上,phantom为您提供了更低级的控制,所以它可以用于其他事情,而不仅仅是创建PDF。例如,单元测试,抓取PNG的屏幕。等等。我试过木偶演员:。与示例中的代码一样可以正常工作。