【发布时间】:2017-02-16 18:45:33
【问题描述】:
tl;dr 我正在寻找一种从 javascript 批量打印数据库存储的 HTML 文档的好方法
我们的用户通过基于 JavaScript 的开源 WYSIWYG 文本编辑器 (CKEditor) 生成富文本内容。 HTML 内容保存到我们的数据库中,并且可以通过其内置的打印功能(基本上只是 window.print())直接从编辑器打印。这很棒,而且效果很好。
现在,我们需要批量打印保存的文档,我正在寻找可行的解决方案。我可以看到多种选择,但都有很大的权衡:
用户选择要打印的文档。 JS 代码循环遍历文档和调用 print 一个接一个。这里的问题是用户会看到一堆打印对话框。这是痛苦的。 (顺便说一句:我们使用的是 Chrome,但我没有将其设置为 kiosk 模式的选项)
用户选择要打印的文档。 JS 代码将所有这些组合在一个(隐藏的)容器中,并且它们都打印为一个“文档”。这些可能是包含表格、图像等的相当大的文档。我担心这里涉及的性能,因为我们可能会向 DOM 添加大量数量。
与上面的 #2 类似,但有时文档会被转换并保存为单个 PDF。这没关系,但似乎没有很多好的/成本效益高的将 HTML 转换为 PDF 的选项。
生成某种可以处理 HTML 内容的报告。我查看了 SQL Server 报告服务,但它支持的 HTML 标记和 CSS 属性非常有限。
有没有更好的方法从 javascript 批量打印 HTML 内容?非常感谢任何帮助!
编辑根据@Paul,我需要澄清几点:
内容是在您的标准在线文本编辑器中创建的内容。就我而言:
- 没有 iframe
- 没有动画
- 没有动态内容
现在,如果我直接从编辑器中打印,则会应用打印样式表,所以这可能会使事情变得有点复杂。
【问题讨论】:
-
@NicolòCozzani 这将受到 #2 中大型 DOM 问题的影响。我担心的是不打开新窗口,它是否是新的 Chrome 打印对话框。谢谢!
-
我同意人们拒绝投票,但希望能提供反馈以改进未来的问题。对我来说,这似乎是一个合理的主题问题。
-
这个问题不清楚,因为 HTML 可以包含插入的内容,如
<iframe>,动态内容,如 CSS 动画,或通过 JavaScript 从<script>标签加载或生成的内容。没有指定转换是否必须处理 HTML 的所有这些元素或仅处理其中的一个子集。除了说明手动方法或多次打印对话很痛苦之外,该问题也没有具体说明已尝试过什么或目前的做法有什么问题。例如,您是否尝试过像 selenium 或 phantomJS 这样的自动化浏览器? -
要求打印单个
.pdf还是多个.pdf文档?
标签: javascript