将长/大字符串作为参数传递到Java应用程序?

将长/大字符串作为参数传递到Java应用程序?,java,php,string,Java,Php,String,我正在尝试将一个大/长字符串(从磁盘读取的PDF二进制文件)传递到Java应用程序中,但迄今为止几乎没有成功。当我从本地磁盘读取文件时,该应用程序可以工作,因此我知道问题与我如何导入数据有关。大致上这就是我所看到的: 我正在阅读,在PHP中处理pdf并使用exec();要触摸Java应用程序,这就是我使用Java的地方: 作品: File input = new File("C:\\Users\\Jack\\Downloads\\col_terror.pdf"); document = PDDo

我正在尝试将一个大/长字符串(从磁盘读取的PDF二进制文件)传递到Java应用程序中,但迄今为止几乎没有成功。当我从本地磁盘读取文件时,该应用程序可以工作,因此我知道问题与我如何导入数据有关。大致上这就是我所看到的:

我正在阅读,在PHP中处理pdf并使用exec();要触摸Java应用程序,这就是我使用Java的地方:

作品:

File input = new File("C:\\Users\\Jack\\Downloads\\col_terror.pdf");
document = PDDocument.load(input);
不起作用: PHP:

爪哇:


我觉得这是一件非常简单的事情,我不理解如何将字符串作为args传递,尽管我进入Java领域已经有几年了。

请阅读PDDocument的Javadoc。如果PDDocument引用,则可以看到您正在传递数据,而需要文件名。 您似乎也没有使用escapeshellarg()对$pdf_字符串进行编码

由于作为shell参数传递二进制数据涉及太多变量,我建议不要这样做。
最简单的解决方案是将PDF写入临时文件,并将文件名传递给java。另一种方法是通过stdin传递PDF数据。

您收到的错误是什么?通过调试器运行java代码时会发生什么?
args[0]
的值是什么?我不是通过调试器运行它,我是在开发机器上测试它,因为我需要查看它在现有应用程序中的行为,没有我可以看到的抛出错误,args[0]是二进制pdf字符串。Java
args
可能需要UTF-16中的字符串。二进制PDF在任何编码中都不是字符串。您需要将PDF作为二进制文件加载,或者加载到某个需要PDF的库方法中。
args[]
数组应包含文本。在您的例子中,可能只是PDF的文件名,实际检索是在
main()
method.rossum中完成的。我从本地文件加载PDF时没有遇到问题,但是PHP代码和Java代码驻留在不同的机器上,因此我无法在本地读取文件,这就是我试图传递PDF的原因,当PHP例程从磁盘读取数据时,直接发送到Java应用程序并让它返回结果。比我想象的要难一点。
exec("/path/to/jar/java -jar JavaAppHere.jar $pdf_string",$ouput);
public static void main(String[] args) throws Exception {
...
document = PDDocument.load( args[0] );
...
}