2014-02-21 18 views
-3

我正在使用itext庫合併多個pdf,我能夠合併多個pdf,但如果pdf 包含掃描頁面那麼我不想將其添加到合併的PDF中,是否可以使用itext檢查掃描頁面?如何檢查PDF文件包含掃描頁面或不使用java中的itext庫

我正在使用以下代碼來合併pdf。

Document PDFJoinInJava = new Document(); 
PdfCopy PDFCombiner = new PdfCopy(PDFJoinInJava, outputStream); 
PdfCopy.PageStamp stamp; 
PDFJoinInJava.open(); 
PdfReader ReadInputPDF; 

List<InputStream> pdfs = streamOfPDFFiles; 
List<PdfReader> readers = new ArrayList<PdfReader>(); 
int totalPages = 0; 
Iterator<InputStream> iteratorPDFs = pdfs.iterator(); 
for (; iteratorPDFs.hasNext(); pdfCounter++) { 
    InputStream pdf = iteratorPDFs.next(); 
    PdfReader pdfReader = new PdfReader(pdf); 
    readers.add(pdfReader); 
    totalPages += pdfReader.getNumberOfPages(); 
    pdf.close(); 
} 
int number_of_pages; 
int currentPageNumber = 0; 
int pageOfCurrentReaderPDF = 0; 
Iterator<PdfReader> iteratorPDFReader = readers.iterator(); 

PdfImportedPage page; 
// Loop through the PDF files and add to the output. 
int count = 1; 

while (iteratorPDFReader.hasNext()) { 
    PdfReader pdfReader = iteratorPDFReader.next(); 
    count++; 
    number_of_pages = pdfReader.getNumberOfPages(); 

    // Create a new page in the target for each source page. 
    for (int pageNum = 0; pageNum < number_of_pages;) { 
     currentPageNumber++; 
     pageOfCurrentReaderPDF++; 
     page = PDFCombiner.getImportedPage(pdfReader, ++pageNum); 
     ColumnText.showTextAligned(stamp.getUnderContent(), 
         Element.ALIGN_RIGHT, new Phrase(String 
           .format("%d", currentPageNumber),new Font(FontFamily.TIMES_ROMAN,3)), 
         50, 50, 0); 
      stamp.alterContents(); 

     PDFCombiner.addPage(page); 
    } 
} 
PDFJoinInJava.close(); 
+0

什麼是用於識別PDF文檔池掃描的頁面的標準? – mkl

+0

我有多個PDF包含一些掃描頁面,我不想在合併的PDF。 –

+1

*一些包含掃描頁面* - 它們如何完全不同?技術上?一種方法是尋找具有大圖形的頁面......但是頁面填充圖形也可能存在於其他文檔中。或者查找沒有或只有最少文本的頁面......但是如果這些掃描頁面是OCR的,它們確實包含文本。因此,請描述這些掃描頁面與未掃描頁面在技術上的區別。 – mkl

回答

-1

如果你想找到是否通過的iText生成的PDF文件或者沒有,那麼你一定要試試下面的代碼:

File file = new File("/Demo.pdf"); 
    Scanner input = new Scanner(new FileReader(file)); 
    while (input.hasNextLine()) { 
     final String checkline = input.nextLine(); 
     if(checkline.contains("Producer(iText")) { 
      // a match found!!!!!! 
      System.out.println(file.getName()+" is generated by iText........ :):) "); 
     break; 
     } 
    } 
+0

請檢查問題。 –

相關問題