2017-04-15 84 views
-2

我正在寫一個從S3存儲區中讀取文件的java程序。我的代碼如下。從S3 Bucket中讀取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存儲PDF內容。

S3Object xFile = client.getObject("myBucket", "myFile.pdf"); 

當我運行此程序時,它正在打印加密文本。

一般閱讀PDF我用PDFBOX,這個夢幻般的炒菜鍋,但在這裏,我想從S3對象讀取它。我知道我們可以從s3文件的url中讀取它並將其傳遞到PDFbox,但這種方法對我來說不起作用。

請讓我知道我該怎麼做。

感謝

+2

「炒文本」是PDF的內容。因爲PDF文件不是純文本,所以不能將原始PDF數據打印到屏幕上。您將需要使用某種可以處理PDF文件的庫。您似乎專注於「從S3對象讀取」,但您已將S3對象的內容轉換爲「InputStream」,然後用「Reader」將該InputStream包裝起來。您只需要弄清楚如何從「InputStream」或「Reader」中讀取PDF文檔。如果PDFBox不支持,我會感到驚訝。 –

+0

「閱讀PD​​F我使用PDFbox,這個炒作太棒了,但在這裏我想從s3對象讀取它」 - 您發佈的代碼根本不使用PDFBox,那麼您期待什麼?!是的,PDF是一種二進制格式。這裏有很多例子,如何轉換爲圖像或使用PDFBox進行文本提取。 –

回答

1

PDF是一種二進制格式。如果不通過另一個程序傳遞,你將不會得到純文本。

+0

爲什麼這是downvoted? PDF *是一種二進制格式,打印它將導致垃圾。你說PDFbox對你來說「不起作用」,但目前還不清楚你甚至想要做什麼。 – l0b0