嗨,我是 phantomjs 的新手,
我已经使用命令生成了 HTML 到 PDF。但我想通过单击页面上的按钮来生成 PDF。并通过某种方式调用 phantomjs 以生成我给定的 pdf URL。
您还可以建议一些 api 生成带有图表和图像的 HTML 格式的 PDF,并且可以轻松地与 JSP 和 Servlet 集成。
嗨,我是 phantomjs 的新手,
我已经使用命令生成了 HTML 到 PDF。但我想通过单击页面上的按钮来生成 PDF。并通过某种方式调用 phantomjs 以生成我给定的 pdf URL。
您还可以建议一些 api 生成带有图表和图像的 HTML 格式的 PDF,并且可以轻松地与 JSP 和 Servlet 集成。
我假设您想要做的是从 Java 代码中运行 phantomjs 可执行文件。
您首先需要知道要执行的命令的完整路径,在您的情况下是 phantomjs。如果您下载了 zip,这是您将文件解压缩到的目录,您可以在其中看到 phantomjs.exe 可执行文件。如果您通过包管理器下载它,要找出从终端运行的完整路径:
which phantomjs
这将显示类似
/usr/bin/phantomjs
一旦你有了它,你将不得不使用Runtime类,除其他外,它允许你使用 exec 直接在操作系统上运行命令。然后,您运行的内容将作为进程处理,您可以使用该进程从中读取命令的输出。
一个没有您应该做的任何异常处理的快速示例。
Process process = Runtime.getRuntime().exec("/usr/bin/phantomjs myscript.js");
int exitStatus = process.waitFor();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader (process.getInputStream()));
String currentLine=null;
StringBuilder stringBuilder = new StringBuilder(exitStatus==0?"SUCCESS:":"ERROR:");
currentLine= bufferedReader.readLine();
while(currentLine !=null)
{
stringBuilder.append(currentLine);
currentLine = bufferedReader.readLine();
}
System.out.println(stringBuilder.toString());
确保进行正确的错误处理,因为您正在创建 JVM 外部的进程,JVM 不能完全控制它,如果您不能很好地管理错误,可能会给程序的其余部分带来问题。
从 phantomjs 版本 1.8 开始提供 Ghost Driver,它是 WebDriver Wire Protocol 的一种实现。
它允许将 phantomjs 作为远程服务器启动,从而实现与它的 http 通信。
$ phantomjs --webdriver=PORT
这使得与任何编程语言的集成变得容易
有关更多详细信息,请查看此处