从javascript,JSP或Java运行Phantomjs

use*_*207 6 javascript java jsp phantomjs

嗨,我是phantomjs的新手,

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

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

cha*_*its 23

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

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

which phantomjs
Run Code Online (Sandbox Code Playgroud)

这将显示类似的东西

/usr/bin/phantomjs
Run Code Online (Sandbox Code Playgroud)

一旦你有了这个,你将不得不使用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());
Run Code Online (Sandbox Code Playgroud)

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