将 PDF 表单拆分为保留字段的页面
Split PDF form into pages preserving fields
我正在使用 iTextSharp 将多页 AcroForm 拆分为单页 AcroForm,但我无法'preserve' 表单的完整功能:
这是我使用的代码:
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 使用时)但是如果我尝试 'list' 每个里面的字段通过 iTextSharp 我找不到一个字段...
P.S。我找到了一个拆分表格 'correctly' 的在线服务。许多软件(例如 PDF Split and Merge Basic)的行为与我的一样。
我哪里错了?
此致,
迈克
感谢@Bruno,解决方案就是这个。 N.B。我必须为每个页面重新实例化 reader,因为使用 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;
我正在使用 iTextSharp 将多页 AcroForm 拆分为单页 AcroForm,但我无法'preserve' 表单的完整功能:
这是我使用的代码:
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 使用时)但是如果我尝试 'list' 每个里面的字段通过 iTextSharp 我找不到一个字段...
P.S。我找到了一个拆分表格 'correctly' 的在线服务。许多软件(例如 PDF Split and Merge Basic)的行为与我的一样。
我哪里错了?
此致, 迈克
感谢@Bruno,解决方案就是这个。 N.B。我必须为每个页面重新实例化 reader,因为使用 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;