0

大きな/長い文字列、ディスクから読み取った PDF バイナリを 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);

ジャワ:

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

これは非常に単純なことだと思いますが、文字列を引数として渡すことについて理解していませんが、Java の世界に足を踏み入れてから数年が経ちました。

4

1 に答える 1

0

PDDocument の Javadoc をお読みください。PDDocument がPDDocumentを参照する場合、 PDDocument.load(java.lang.String)がファイル名を期待している間にデータを渡していることがわかります。また、 $pdf_string を escapeshellarg() でエンコードしていないようです

シェルの引数としてバイナリ データを渡す際に関与する変数が多すぎるため、これは避けたほうがよいでしょう。最も簡単な解決策は、PDF を一時ファイルに書き込み、そのファイル名を Java に渡すことです。別の方法は、stdin を介して PDF データを渡すことです。

于 2012-08-10T15:52:38.713 に答える