从javascript,JSP或Java运行Phantomjs

嗨,我是phantomjs的新手,

我已使用命令生成HTML到PDF。 但我想通过单击页面上的按钮生成PDF。 并通过某种方式调用phantomjs来生成我的给定URL到pdf。

您还可以建议使用图表和图像生成生成PDF格式的API,并且可以轻松地与JSP和Servlet集成。

我假设您要做的是从Java代码中运行phantomjs可执行文件。

在您的情况下,您需要先了解要执行的命令的完整路径,phantomjs。 如果您下载了zip,则这是您将文件解压缩到的目录,您可以在其中看到phantomjs.exe可执行文件。 如果您是通过包管理器下载的,那么要查找从终端运行的完整路径:

which phantomjs 

这将显示类似的东西

 /usr/bin/phantomjs 

一旦你有了这个,你将不得不使用Runtime类,除其他外,它允许你使用exec直接在操作系统上运行命令。 您运行的内容将作为一个进程处理 ,您可以使用该进程从中读取命令的输出。

一个快速示例,没有您应该执行的任何exception处理。

  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()); 

确保正确执行error handling,因为您正在创建JVM无法完全控制的JVM外部进程,如果您不能很好地管理错误,可能会对程序的其余部分产生问题。

从phantomjs发布1.8版本可以使用Ghost Driver,这是WebDriver Wire Protocol的一个实现。

它允许启动phantomjs作为远程服务器启用与它的http通信。

$ phantomjs --webdriver=PORT

这使得可以轻松地与任何编程语言集成

有关详细信息,请查看此处