2012-08-10 32 views
0

我正试图将一个大/长的字符串(从磁盘读取的PDF二进制文件)传递到Java应用程序中,并且迄今取得的成功很少。该应用程序在我从本地磁盘读取文件时工作,所以我知道问题与我如何导入数据有关。粗略地说,这就是我正在看的:将长/大字符串作为参数传递给Java应用程序?

我在阅读,在PHP中操纵PDF并使用exec();触摸Java应用程序,这是我在哪里与Java:

作品:

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

不起作用: PHP:

exec("/path/to/jar/java -jar JavaAppHere.jar $pdf_string",$ouput); 

的Java:

public static void main(String[] args) throws Exception { 
... 
document = PDDocument.load(args[0]); 
... 
} 

我觉得这很简单我不理解将字符串作为参数传递,虽然它有蜜蜂几年后,我已经进入了Java的土地。

+4

您收到的错误是什么?通过调试器运行java代码会发生什么? 'args [0]'的价值是什么? – Matt 2012-08-10 14:22:49

+0

我没有通过调试器运行这个,我在开发机器上测试它,因为我需要看看它在现有应用程序中的行为如何,没有发现可以看到的错误,并且args [0]是二进制pdf字符串。 – jbrain 2012-08-10 14:46:43

+0

Java'args'期待一个字符串,可能是UTF-16。二进制PDF不是任何编码中的字符串。您需要将PDF加载为二进制文件,或者加载到期望PDF的库文件中。 'args []'数组应该包含文本。在你的情况下,可能只是PDF的文件名,而实际的检索是在'main()'方法内完成的。 – rossum 2012-08-10 14:56:36

回答

0

请阅读PDDocument的Javadoc。如果PDDocument指PDDocument,您可以看到您正在传递数据,而PDDocument.load(java.lang.String)需要文件名。 你也似乎没有使用escapeshellarg编码$ pdf_string()

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

相关问题