【问题标题】:How can you print a page that has been altered by javascript?如何打印已被 javascript 更改的页面?
【发布时间】:2014-05-01 08:19:34
【问题描述】:
这是我所拥有的screenshot。
用户可以通过删除项目、添加项目或单击项目将其划掉来更改页面。我希望用户能够打印他们用 javascript 更改的页面。据我了解,为了让用户打印,您需要创建一个具有不同样式表设置的单独文件。
我正在使用 Rails 4,我想我会使用 this 为用户创建 PDF。
1) 我不知道如何生成删除、添加和划掉正确内容的文档。
2) 我不确定如何生成文档以使其没有导航之类的内容(因为打印出来的列表不需要它)。我想用 CSS 隐藏它。
【问题讨论】:
标签:
javascript
css
ruby-on-rails
pdf
printing
【解决方案1】:
1) 客户所做的更改是客户端的吗?在这种情况下,跟踪所有用户的更改,当用户单击“打印”时,将所有这些更改(如参数)发送到 rails,以便您可以从 rails 操作呈现要打印的正确信息。
但通常,在 rails/javascript 应用程序上,当用户在客户端使用 javascript 执行不同的操作时,它会调用一些 ajax 代码来通知 rails 应用程序有关更改,因此您可以将新状态存储在rails 数据库,因此用户可以稍后重新加载状态。您还可以将应用程序的状态存储在会话或临时缓存中。
2) 这正是我想要自定义用户打印的内容时所做的,我在 html 上隐藏了我不想打印的类,当包含 css 时,你告诉浏览器css 应通过包含媒体打印应用于打印文档,例如:
stylesheet_link_tag "my_style", media: "print"
尽管如此,在这种情况下,您没有使用浏览器打印功能,根据我从您的问题中可以理解,您将生成一个 pdf,因此,您将结束从 rails 渲染视图,您可以添加一个参数让视图知道它将被渲染以进行打印(因此您可以绘制自定义 css 或只是避免渲染导航栏),或者您可以使用自定义代码/视图调用不同的操作来生成 pdf。