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

时间:2015-07-04 10:10:34

标签: c# pdf itextsharp

我使用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使用时),但如果我尝试列出&#39;通过iTextSharp他们每个人的领域我找不到一个字段......

P.S。我找到了一个正确分割表格的在线服务&#39;。许多软件(PDF Split和Merge Basic for examle)的行为与我的相似。

我哪里错了?

祝你好运,  麦克

1 个答案:

答案 0 :(得分:1)

@Bruno解决方案就是这个。注:因为使用copy.AddDocument(reader,pages)从reader对象中删除所有页面,所以我必须为每个页面重新实现阅读器。

        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;
相关问题