2017-04-15 87 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