2017-07-17 109 views
0

我想刪除包含特殊字符串(拆分標籤)的PDF文件的所有頁面。到目前爲止,我有這個代碼,但它只是給出了PDF的所有頁面。那麼它有什麼問題?我遍歷源PDF的頁面並檢查實際頁面是否包含分隔標籤,然後使用它爲頁面編號創建一個新的PDF。如果有人能幫忙,會很棒。謝謝!使用itextsharp拆分PDF文件在splittag /切出特殊頁面

  iTextSharp.text.PdfReader reader = new iTextSharp.text.PdfReader(textBox3.Text); 
      string splittag = textBox2.Text; 

      StringBuilder text = new StringBuilder(); 

      for (int i = 1; i <= reader.NumberOfPages; i++) 
      { 
       if(PdfTextExtractor.GetTextFromPage(reader, i, new SimpleTextExtractionStrategy()).ToString().Contains(splittag)) ; 
       { 
        richTextBox1.Text = PdfTextExtractor.GetTextFromPage(reader, i, new SimpleTextExtractionStrategy()); 
        Document document = new Document(); 
        PdfCopy copy = new PdfCopy(document, new FileStream(textBox5.Text + "\\" + i + ".pdf", FileMode.Create)); 
        document.Open(); 
        copy.AddPage(copy.GetImportedPage(reader, i)); 
        document.Close(); 
       }           
      } 

回答

4

我會用下面的代碼:

public static List<Integer> determineSplits(String fileName) throws FileNotFoundException, IOException 
{ 
    PdfDocument pdfDocument = new PdfDocument(new PdfReader(fileName)); 
    List<Integer> splitPages = new ArrayList<>(); 
    for(int i=1;i<=pdfDocument.getNumberOfPages();i++) { 
     String pageTxt = PdfTextExtractor.getTextFromPage(pdfDocument.getPage(i)); 
     if(pageTxt.contains("LoremIpsum")) 
     { 
      splitPages.add(1); 
     } 
    } 
    pdfDocument.close(); 
} 

這產生了需要包括頁面的列表。 然後你可以使用iText的代碼分離出你想要的頁面使用

public List<PdfPage> PdfDocument::copyPagesTo(int pageFrom, 
          int pageTo, 
          PdfDocument toDocument, 
          IPdfPageExtraCopier copier) 
+0

這幫了很大忙。謝謝! –

0

我在這裏使用此代碼現在。工作正常,更容易。

  FileInfo file = new FileInfo(textBox2.Text); 

      using (PdfReader reader = new PdfReader(textBox2.Text)) 
      { 

       for (int pagenumber = 1; pagenumber <= reader.NumberOfPages; pagenumber++) 
       { 
        string filename = System.IO.Path.GetFileNameWithoutExtension(file.Name); 

        Document document = new Document();            

        if(PdfTextExtractor.GetTextFromPage(reader, pagenumber, new SimpleTextExtractionStrategy()).Contains("LoremIpsum")) 
        { 
         PdfCopy copy = new PdfCopy(document, new FileStream(textBox3.Text + "\\" + filename + pagenumber + ".pdf", FileMode.Create)); 
         document.Open(); 
         copy.AddPage(copy.GetImportedPage(reader, pagenumber)); 
         document.Close(); 
        } 

       } 
      } 
相關問題