2017-07-17 3 views
0

特殊な文字列(splittag)が含まれているPDFファイルのすべてのページを切り取ります。今まで私はこのコードを持っていますが、ソースPDFのすべてのページを出力します。それで何が間違っていますか?私は、元のPDFのPagesを繰り返し、実際のページにsplittagが含まれているかどうかを確認し、pagenumber用に新しいPDFを作成します。誰かが助けてくれれば素晴らしいだろう。ありがとうございました!splittagのPDFファイルを分割する/特別なページを切り取るitextsharpを使用する

  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(); 
} 

を。 そして、あなたは私が今ここにこのコードを使用しています

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

これは多くの助けとなりました。ありがとうございました! –

0

を使用するページを分離するiTextのコードを使用することができます。うまく動作し、より簡単です。

  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(); 
        } 

       } 
      } 
関連する問題