使用 itextsharp 在 splittag 上拆分 PDF 文件/剪切特殊页面

Sar*_*jli 1 c# pdf itext

我想删除包含特殊字符串(splittag)的 PDF 文件的所有页面。到目前为止,我有这段代码,但它只是给出了源 PDF 的所有页面。那么它有什么问题呢?我遍历源 PDF 的页面并检查实际页面是否包含拆分标签,然后使用它为页码创建一个新的 PDF。如果有人可以提供帮助,那就太好了。谢谢!

            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();
                }                                        
            }
Run Code Online (Sandbox Code Playgroud)

Jor*_*ens 6

我会使用以下代码:

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();
}
Run Code Online (Sandbox Code Playgroud)

这将生成需要包含的页面列表。然后你就可以使用iText代码来分离出你想要使用的页面

public List<PdfPage> PdfDocument::copyPagesTo(int pageFrom,
                             int pageTo,
                             PdfDocument toDocument,
                             IPdfPageExtraCopier copier)
Run Code Online (Sandbox Code Playgroud)