1

我知道有一个类似问题的列表,但所有处理页面都没有用户交互(静态,即使可能存在一些 js)。

假设我们有一个用户可以交互的页面(例如 svg 比更改,或带有向下钻取的 html 表 - 内容更改)。这些交互将改变页面。输入问题时在stackoverflow中也会发生同样的情况......

这个想法是添加一个按钮,“转换为 pdf”获取 html 的状态并向用户发送回 pdf 版本(我们有一个 Java 服务器)。

使用浏览器的打印不是我正在寻找的答案:-)。

这是月球上的一根棍子吗?

4

3 回答 3

1

iTextPDF和Aspose.PDF都允许您这样做(我已经看到它们在两个不同的项目中使用),但是没有魔法,您必须做一些工作

步骤大致是:

  1. 获取(作为字符串)要使用 jQuery 或 innerHTML 打印的文档部分
  2. 调用服务器端的服务将其转换为 PDF
  3. [服务器端] 使用基于白名单的工具来清理 hmtl(除非你想被黑客入侵)。JSoup非常适合。
  4. [服务器端] 使用 IText 或 Aspose API 从 HTML 创建 PDF(这并不简单,您必须阅读文档)
  5. 下载文件
于 2012-05-22T16:59:44.760 回答
1

您必须存储生成 HTML 视图的参数(即用户单击的内容、他们所做的选择等)。如果你有一个生成 HTML 视图的参数列表,你可以有一个方法来接受参数列表(JSON 帖子?),生成 HTML 视图并将其传递给你的 PDF 生成例程。为此,我对 Java 库不太熟悉,但 PHP 有 TCPDF 可以采用 html 输出基本上为您生成 PDF。当然,有 Java 库可以让您做同样的事情,或者您可以使用参数来获取行/数组的列表,这些行/数组可以使用您选择的 PDF 库进行迭代和输出。

于 2012-05-22T16:57:41.567 回答
0

我还推荐 DocRaptor,这是我公司构建的 HTML 到 PDF API,Expected Behavior。

DocRaptor 使用 Prince XML 生成 PDF,因此比同类产品产生更高质量的结果。

使用我们的服务将 PDF 生成添加到您自己的 Web 应用程序就像向我们的服务器发出 HTTP POST 请求一样简单。

这是 DocRaptor 主页的链接:

猛禽博士

以及指向我们 API 文档的链接:

DocRaptor API 文档

于 2012-05-24T20:16:14.390 回答