2016-08-18 3 views
1

PDF 박스를 사용하여 url에서 pdf 파일을 읽으십시오. 아래의 jave 코드는 pdf를 읽고 프로젝트 위치에 저장하기에 완벽한 코드입니다.PDF PDF 박스를 사용하여 읽기 - 페이지 수를 이용한 설명

String pdfPageCount = 17; 
String pdfUrl = "abc.org/invoicepdf.pdf?Range=1"; 
URL pdfDownload = new URL(pdfUrl); 
connectionGet = (HttpsURLConnection) pdfDownload.openConnection(); 
String authorizationHeader1 = "Bearer " + getToken; 
connectionGet.setRequestProperty("Authorization", authorizationHeader1); 
connectionGet.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
connectionGet.setRequestMethod("GET"); 
int responseCode = connectionGet.getResponseCode(); 
    if (responseCode != 404) { 
     PDDocument pd = new PDDocument(); 
     InputStream inputstreamFinal1 = connectionGet.getInputStream(); 
     PDDocument load = PDDocument.load(inputstreamFinal1);       
     load.save("CopyOfInvoice1.pdf"); 
    } 

내가 pdfPageCount 값에 따라 과정을 반복하려는 내 다음 단계로, 현재 내가 하드 코딩 pdfUrl (/invoicepdf.pdf?Range=1)

1의 페이지 수를 예상 할 :

17 페이지를 모두 읽고 단일 PDF 파일로 저장

+0

그래서 17 가지 PDF 페이지를 하나의 문서로 결합하는 방법을 알고 싶습니까? –

+0

@rabbitguy : 정확히 – Prabu

+0

사람들이 도움을 요청합니다. – Prabu

답변

1

다음은 PDFMergerExample을 기반으로 한 몇 가지 코드입니다. 모자는 코멘트에 언급됩니다. URL 검색 코드가 정확한지 확인하지 않았습니다.

List<InputStream> sources = new ArrayList<InputStream>(); 
int pdfPageCount = 17; 
try 
{ 
    for (int p = 1; p <= pdfPageCount; ++p) 
    { 
     String pdfUrl = "abc.org/invoicepdf.pdf?Range=" + p; 
     URL pdfDownload = new URL(pdfUrl); 
     HttpsURLConnection connectionGet = (HttpsURLConnection) pdfDownload.openConnection(); 
     String authorizationHeader1 = "Bearer " + getToken; 
     connectionGet.setRequestProperty("Authorization", authorizationHeader1); 
     connectionGet.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
     connectionGet.setRequestMethod("GET"); 
     int responseCode = connectionGet.getResponseCode(); 
     if (responseCode != 404) 
     { 
      sources.add(connectionGet.getInputStream()); 
     } 
     else 
     { 
      //TODO error handling 
      return; 
     } 
    } 
    PDFMergerUtility pdfMerger = new PDFMergerUtility(); 
    pdfMerger.addSources(sources); 
    pdfMerger.setDestinationFileName("CopyOfInvoice1.pdf"); 
    pdfMerger.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly()); 
} 
catch (IOException e) 
{ 
    //TODO error handling 
    return; 
} 
finally 
{ 
    // cleanup 
    for (InputStream source : sources) 
    { 
     IOUtils.closeQuietly(source); 
    } 
} 
+0

감사합니다. 많은 의견을 보내 주시면 감사하겠습니다. – Prabu

+0

도움을 주셔서 감사합니다.하지만 마침내 섹션에 문제가 있습니다. 소스 목록을 제대로 지우지 않았습니다. 2 및 두 번째 시간 실행에 새 페이지 수가 추가되어 문서가 작성되지 않았습니다. – Prabu

+0

@Prabu 나는 당신이 무슨 뜻인지 이해하지 못합니다. 당신이 초기화하지 않았거나 소스 ArrayList를 두 번 비울 수 있습니까? (입력 스트림이 "소비"되기 때문에 재사용 할 수 없습니다) –