【问题标题】:Running Phantomjs from javascript, JSP or Java从 javascript、JSP 或 Java 运行 Phantomjs
【发布时间】:2013-06-03 04:17:57
【问题描述】:

您好,我是 phantomjs 的新手,

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

您还可以建议一些生成带有图表和图像的 HTML 格式的 api,并且可以轻松地与 JSP 和 Servlet 集成。

【问题讨论】:

  • 我也有同样的要求。我想将我的 jsp 页面的一部分打印为 PDF。你能说说你是怎么实现的吗?

标签: java javascript jsp phantomjs


【解决方案1】:

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

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

which phantomjs

会显示类似的东西

/usr/bin/phantomjs

一旦你有了它,你就必须使用Runtime 类,除其他外,它允许你使用 exec 直接在操作系统上运行命令。然后,您运行的内容将作为 Process 处理,您可以使用它来读取命令的输出。

一个没有您应该做的任何异常处理的简单示例。

    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 无法完全控制该进程,如果您不能很好地管理错误,可能会给程序的其余部分带来问题。

【讨论】:

  • 非常感谢 Chamakits :)
  • 很高兴 :D 如果这是您正在寻找的答案,您能否将其标记为已接受并投票。如果这不是您要寻找的答案,那很好。
  • @chamakits :我有类似的要求。你能在这里检查和建议吗?stackoverflow.com/questions/61021619/…
【解决方案2】:

从 phantomjs 版本 1.8 开始提供 Ghost Driver,它是 WebDriver Wire Protocol 的一种实现。

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

$ phantomjs --webdriver=PORT

这使得与任何编程语言的集成变得容易

更多详情请看here

【讨论】:

    猜你喜欢
    • 2017-08-14
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 2011-05-04
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多