2017-04-15 2 views
-2

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"); 

이 프로그램을 실행하면 스크램블 된 텍스트가 인쇄됩니다.

일반적으로 pdf를 읽으려면 PDfbox를 사용하십시오.이 woks 환상적이지만 여기서는 s3 객체에서 읽고 싶습니다. 나는 우리가 s3 파일 URL에서 그것을 읽을 수 있고 그것을 PDFbox로 전달할 수 있다는 것을 알고 있지만, 그 접근법은 나를 위해 작동하지 않을 것이다.

어떻게해야하는지 알려주세요.

감사

+2

"스크램블 된 텍스트"는 PDF 내용입니다. PDF 파일은 일반 텍스트가 아니기 때문에 원시 PDF 데이터를 화면에 인쇄 할 수는 없습니다. PDF 파일을 처리 할 수있는 일종의 라이브러리를 사용해야 할 것입니다. "S3 객체에서 읽는 것"에 집중하는 것 같지만 S3 객체의 내용을 이미 'InputStream'으로 변환하고'InputStream'을 'Reader'로 래핑하고 있습니다. 'InputStream' 또는'Reader'에서 PDF 문서를 읽는 방법을 알아 내면됩니다. 나는 PDFBox가 그것을 지원하지 않는다면 놀랄 것이다. –

+0

"PDF를 읽으려면 PDFbox를 사용하십시오.이 woks 환상적이지만 여기서는 s3 객체에서 읽으 려합니다."- 게시 한 코드는 PDFBox를 전혀 사용하지 않으므로, 무엇을 기대 했습니까?! 그리고 예, PDF는 바이너리 형식입니다. PDFBox를 사용하여 이미지로 변환하거나 텍스트 추출을 수행하는 방법에 대한 예제가 많이 있습니다. –

답변

1

PDF는 형식입니다. 다른 프로그램을 통과하지 않으면 일반 텍스트를 가져올 수 없습니다.

+0

왜이 기능을 다운 그레이드 했습니까? PDF *는 * 바이너리 형식이며 인쇄하면 쓰레기가됩니다. PDFbox는 "작동하지 않을 것"이라고 말하고 있지만, 사용자가하려고하는 것조차 분명하지 않습니다. – l0b0