2017-07-17 50 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(); 
        } 

       } 
      } 
相关问题