Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java应用程序启动进程_Java_Playframework_Wkhtmltopdf - Fatal编程技术网

从Java应用程序启动进程

从Java应用程序启动进程,java,playframework,wkhtmltopdf,Java,Playframework,Wkhtmltopdf,我或多或少知道该如何做,但我认为由于缺乏经验,我被这个命令的复杂性所折磨 我正在尝试将一些原始html输入wkhtmltopdf。我可以通过以下命令行执行此操作: echo "<p>Hello</p>" | wkhtmltopdf - ~/somePdf.pdf 或 它们都不会在我的主文件夹中生成文件 我已经读到wkhtmltopdf将输出到STDERR,但我不确定如何从Eclipse中查看它。我被告知它应该在我的控制台视图中可用,但我在那里没有看到任何东西 感谢您的帮

我或多或少知道该如何做,但我认为由于缺乏经验,我被这个命令的复杂性所折磨

我正在尝试将一些原始html输入
wkhtmltopdf
。我可以通过以下命令行执行此操作:

echo "<p>Hello</p>" | wkhtmltopdf - ~/somePdf.pdf

它们都不会在我的主文件夹中生成文件

我已经读到
wkhtmltopdf
将输出到STDERR,但我不确定如何从Eclipse中查看它。我被告知它应该在我的控制台视图中可用,但我在那里没有看到任何东西

感谢您的帮助,谢谢

编辑


接受的答案适用于
wkhtmltopdf
,但适用于使用该剧的任何其他人!找到这篇文章的框架,基于scala模板生成PDF。它工作得非常好,但是:)

您不能直接执行此操作,因为您正在运行两个命令并创建一个管道。
Runtime.exec()
ProcessBuilder.command()
方法都不适用于此。要从Java中实现类似于此的功能,最简单的方法是将所有这些内容放入一个shell脚本中,并使用
Runtime.exec()
调用该脚本

编辑: 您还可以跳过shell脚本并调用

Runtime.getRuntime().exec( new String[] { "bash", "-c", "\"echo \"<p>Hello</p>\ | wkhtmltopdf - ~/somePdf.pdf\""} );
Runtime.getRuntime().exec(新字符串[]{“bash”、“-c”、“\”echo\“你好

\\\\\\\\\\\\ wkhtmltopdf-~/somePdf.pdf\”);

这样就省去了编写shell脚本的时间,但您可能需要稍微修改一下引号才能正确使用。

您不能直接这样做,因为您正在运行两个命令并创建一个管道。
Runtime.exec()
ProcessBuilder.command()
方法就是为了实现这一点而设计的。要想从Java中实现类似于此的功能,最简单的方法是将所有这些内容放入一个shell脚本中,并使用
Runtime.exec()调用该脚本。

编辑: 您还可以跳过shell脚本并调用

Runtime.getRuntime().exec( new String[] { "bash", "-c", "\"echo \"<p>Hello</p>\ | wkhtmltopdf - ~/somePdf.pdf\""} );
Runtime.getRuntime().exec(新字符串[]{“bash”、“-c”、“\”echo\“你好

\\\\\\\\\\\\ wkhtmltopdf-~/somePdf.pdf\”);

这样就省去了编写shell脚本的时间,但您可能需要稍微修改一下引号才能使其正确。

您可以尝试以下方法将错误流输出到控制台:

try{
    Runtime runTime= Runtime.getRuntime();
    Process process= runTime.exec("echo " + html.body() + " | wkhtmltopdf - /home/sam/yourPdf.pdf");

    BufferedReader reader   = new BufferedReader(new InputStreamReader(process.getErrorStream()));
    String line = null;
    while ( (line = reader.readLine()) != null){
        System.err.println(line);
    }
}catch(Exception exe){
    exe.printStackTrace();
}

请注意,这是特定于获取打印到错误流中的内容。我希望这有助于您入门

您可以尝试以下方法将错误流输出到控制台:

try{
    Runtime runTime= Runtime.getRuntime();
    Process process= runTime.exec("echo " + html.body() + " | wkhtmltopdf - /home/sam/yourPdf.pdf");

    BufferedReader reader   = new BufferedReader(new InputStreamReader(process.getErrorStream()));
    String line = null;
    while ( (line = reader.readLine()) != null){
        System.err.println(line);
    }
}catch(Exception exe){
    exe.printStackTrace();
}

请注意,这是特定于获取打印到错误流中的内容。我希望这有助于您入门

这是一个很好的信息,但不幸的是对我没有太大帮助:)方法几乎立即结束并返回0。@Samo阅读其他页面,它准确地描述了您的情况。这是一个很好的信息,但不幸的是对我没有太大帮助:)方法
waitFor()
方法几乎立即结束并返回0。@Samo阅读其他页面,它准确地描述了您的情况。在数组元素之间放置逗号,并给最后一个数组元素加上一个结束引号,您将得到一个绿色的勾号。哇,语法检查:)我想知道我写这篇文章时这些内容是如何丢失的;-)在数组元素之间加逗号,给最后一个数组元素加一个结束引号,你会得到一个绿色的记号。哇,语法检查:)我想知道我写这篇文章时这些是怎么丢失的;-)