tl;博士我正在寻找一种从javascript批量打印数据库存储的HTML文档的好方法
我们的用户通过开源WYSIWYG基于javascript的文本编辑器(CKEditor)生成富文本内容。 HTML内容保存到我们的数据库中,可以通过内置的打印功能直接从编辑器打印(基本上只是window.print())。这很棒,而且效果很好。
现在,我们需要批量打印已保存的文档,我正在寻找可行的解决方案。我可以看到各种各样的选项,但都有很大的权衡:
用户选择要打印的文档。 JS代码循环遍历文档和调用逐个打印。这里的问题是用户将看到一堆打印对话框。哪个是痛苦的。 (旁白:我们正在使用Chrome,但我没有选择将其设置为自助服务终端模式)
用户选择要打印的文档。 JS代码将所有这些组合在一个(隐藏的)容器中,并且它们都被打印为一个文档'。这些可能是包含表格,图像等的相当大的文档。我担心这里涉及的性能,因为我们可能会向DOM添加重要金额。
与上面的#2类似,但在某些时候,文档会被转换并保存为单个PDF。这没关系,但似乎没有什么好的/经济有效的选项可以将HTML转换为PDF。
生成某种可以处理HTML内容的报告。我查看了SQL Server报告服务,但它支持一组非常有限的HTML标记和CSS属性。
有没有更好的方法从javascript批量打印HTML内容?非常感谢任何帮助!
编辑根据@Paul,我需要澄清几点:
内容是在标准在线文本编辑器中创建的内容。就我而言:
现在,如果我要直接从编辑器中打印一个打印样式表,那么这可能会使事情变得复杂。
答案 0 :(得分:7)
由于内容可能很大并且占用大量内存,我会在服务器端执行此操作。在客户端上选择文档并请求服务器将这些文档呈现为PDF,例如利用PhantomJS。这样您甚至可以使用移动客户端来获取PDF。
答案 1 :(得分:1)
没有足够的代表发表评论。
我也会在服务器端这样做。从后端生成HTML文档或PDF,并使其可供用户下载。
用户第一次单击时禁用下载按钮,并在服务器生成文档时启用它。您可以使用xmlhttprequest通过在后端设置全局变量来检查完成任务的百分比,并在客户端显示它。
如果服务器需要很长时间才能生成,请让用户稍后再检查一下。比如说文档可以下载,直到xxxx-xx-xx
答案 2 :(得分:0)
我完全赞同上面的答案,PhantomJS可能是最好的选择。唯一的问题是在可靠性方面PhantomJS非常接触并且在最后几个版本中使用。如果文档的大小变得太大,Phantom可能会处理得太多(记住它最初是为Web测试目的而设计的,并且变成了Web自动化)。在为此编写脚本时,我建议按照下面的大纲(将过程分解为更易于管理的步骤)
var steps = [
function() {
// step 1
},
function() {
// step 2
}
]
同样,它不是一个完美的选择,但它是我们现在必须合作的最佳选择。如果您有任何问题可以随时联系我,我自己也在从事网络自动化工作,所以这一切都将在我脑海中浮现。
下载PhantomJS Here