私はs3バケットからファイルを読み込むJavaプログラムを作成しています。私のコードは以下の通りです。S3バケットからPDFファイルを読む
AmazonS3 client = new AmazonS3Client(myCredentials);
S3Object xFile = client.getObject("myBucket", "myFile.txt");
InputStream contents = xFile.getObjectContent();
BufferedReader br = new BufferedReader(new InputStreamReader(contents));
while (true) {
String line = br.readLine();
if (line == null)
break;
System.out.println(" " + line);
}
System.out.println();
これは問題なく動作します。すなわち、データを正しく表示する。
同様に、以下のように変更してs3 BucketからPDFコンテンツを読み込もうとしています。
S3Object xFile = client.getObject("myBucket", "myFile.pdf");
このプログラムを実行すると、スクランブルされたテキストが印刷されます。
私はPDfboxを使うのが一般的ですが、これはすばらしいですが、ここではs3オブジェクトから読みたいと思います。私はs3ファイルのURLからそれを読み取ってPDFboxに渡すことができることを知っていますが、そのアプローチは私にとってはうまくいかないでしょう。
どうすればいいのか教えてください。
おかげ
「スクランブルテキスト」はPDFの内容です。 PDFファイルはプレーンテキストではないので、生のPDFデータをそのまま画面に出力することはできません。 PDFファイルを処理できるライブラリを使用する必要があります。あなたは "S3オブジェクトから読み込む"ことに焦点を当てているようですが、S3オブジェクトの内容を既に 'InputStream'に変換して、' InputStream'を 'Reader'でラップしています。 'InputStream'や' Reader'からPDF文書を読む方法を理解するだけです。私はPDFBoxがそれをサポートしていないと驚くだろう。 –
"pdfを読むには私はPDfboxを使っていますが、このwoks fantasticですが、ここで私はs3オブジェクトからそれを読んでいます" - あなたが投稿したコードはPDFBoxを全く使わないので、何を期待しましたか?そして、はい、PDFはバイナリ形式です。ここにはPDFBoxを使って画像に変換する方法やテキストを抽出する方法の例がたくさんあります。 –