将PDF表单拆分为保留字段的页面

本文关键字:字段 保留字 保留 PDF 表单 拆分 | 更新日期: 2023-09-27 18:00:58

我正在使用iTextSharp将多页AcroForms拆分为单页AcroForm,但我无法"保留"表单的完整功能:

这是我正在使用的代码:

        using (PdfReader reader = new PdfReader(options.InputFile))
        {
            string basename = Path.GetFileNameWithoutExtension(options.InputFile);
            for (int pagenumber = 1; pagenumber <= reader.NumberOfPages; pagenumber++)
            {
                string filename;
                Document document;
                PdfCopy copy;
                document = new Document();
                filename = String.Format("{0}.{1}.pdf", basename, pagenumber);
                copy = new PdfCopy(document, new FileStream(filename, FileMode.Create));
                document.Open();
                copy.AddPage(copy.GetImportedPage(reader, pagenumber));
                document.Close();
            }
            return reader.NumberOfPages;
        }

生成的pdf页面表现得像完全工作的AcroForm(当通过Acrobat Reader使用时(,但如果我试图通过iTextSharp"列出"每个页面中的字段,我找不到一个字段。。。

附言:我发现一个在线服务"正确"拆分了表格。许多软件(例如PDF Split and Merge Basic(的行为与我的类似。

我哪里错了?

谨致问候,Mike

将PDF表单拆分为保留字段的页面

thks@Bruno解决方案就是这个。注意:自从使用复印件以来,我不得不对每一页的读者进行复制件。AddDocument(阅读器,页面(从阅读器对象中删除所有页面。

        PdfReader reader = new PdfReader(options.InputFile);
        List<int> pages;
        pages = new List<int>();
        int n_pages = reader.NumberOfPages;
        string basename = Path.GetFileNameWithoutExtension(options.InputFile);
        for (int pagenumber = 1; pagenumber <= n_pages; pagenumber++)
        {
            using (PdfReader page_reader = new PdfReader(options.InputFile))
            {
                string filename;
                Document document;
                PdfCopy copy;
                pages.Clear();
                filename = String.Format("{0}.{1}.pdf", basename, pagenumber);
                document = new Document();
                copy = new PdfCopy(document, new FileStream(filename, FileMode.Create));
                copy.SetMergeFields();
                document.Open();
                pages.Add(pagenumber);
                copy.AddDocument(page_reader, pages);
                document.Close();
            }
        }
        return n_pages;