2016-08-18 3 views
1

Прочтите pdf-файл с URL-адресом с помощью PDFbox, ниже кода 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, в настоящее время я делаю жестко закодированы количество страниц в 1 в pdfUrl (/invoicepdf.pdf?Range=1)

Ожидаемое:

Прочтите все 17 страниц и сохраните их в одном файле pdf

+0

Итак, вы хотите знать, как объединить 17 отдельных страниц PDF в один документ? –

+0

@rabbitguy: точно – Prabu

+0

ребята запросят помощь – Prabu

ответ

1

Вот код, основанный на файле PDFMergerExample t шляпа упоминается в комментариях. Обратите внимание, что я не проверял правильность кода поиска 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

Спасибо за помощь, но у меня есть проблема в разделе finally, ее непонятно правильно список источников, когда я выполнил первый счет времени, будет 2 и второе время, добавленное с новым количеством страниц, поэтому документ не был создан – Prabu

+0

@Prabu Я не понимаю, что вы имеете в виду; может быть, вы не инициализировали/не пускали источники ArrayList во второй раз? (Вы не можете повторно использовать его, потому что входные потоки будут «потребляться») –

Смежные вопросы