C# 复制到新文件中,并在iText7 c中填写表格#
我一直在努力掌握ITEXT7c#,但运气不佳 我的目标是:C# 复制到新文件中,并在iText7 c中填写表格#,c#,itext,itext7,C#,Itext,Itext7,我一直在努力掌握ITEXT7c#,但运气不佳 我的目标是: 以表单(多个字段)作为模板加载pdf(一页) 填写表格,展平并将填写的表格页面复制到新文档中 使用不同的数据重复2次 保存到内存流 我有不同的部分工作,但我不能让它一起工作 var memoryStream = new MemoryStream(); PdfReader reader = new PdfReader("untitled-1.pdf"); //Iput PdfWriter writer = new PdfWriter(me
var memoryStream = new MemoryStream();
PdfReader reader = new PdfReader("untitled-1.pdf"); //Iput
PdfWriter writer = new PdfWriter(memoryStream); //output
PdfDocument pdfDoc = new PdfDocument(reader, writer);
PdfAcroForm form = PdfAcroForm.GetAcroForm(pdfDoc, true);
var fields = form.GetFormFields();
if(fields.ContainsKey("address")) {
fields["address"].SetValue("first\nlast");
}
form.FlattenFields();
pdfDoc.Close();
byte[] b = memoryStream.ToArray();
File.WriteAllBytes(@"t.pdf", b);
克隆页面:
// create clone page x times
PdfDocument pdfDoc = new PdfDocument(new PdfWriter("output.pdf").SetSmartMode(true));
pdfDoc.InitializeOutlines();
PdfDocument srcDoc;
for (int i = 0; i<5; i++) {
srcDoc = new PdfDocument(new PdfReader("untitled-1.pdf"));
// copy content to the resulting PDF
srcDoc.CopyPagesTo(1, srcDoc.GetNumberOfPages(), pdfDoc);
}
pdfDoc.Close();
//创建克隆页面x次
PdfDocument pdfDoc=新的PdfDocument(新的PdfWriter(“output.pdf”).SetSmartMode(true));
pdfDoc.InitializeOutlines();
PDF文档srcDoc;
for(inti=0;我写了这个问题后就有了一个想法
使用名为address的表单和文本字段创建pdf文件以用作模板,另存为untitled1 pdf
此代码将创建一个空文档,然后为用户中的每个用户加载并填充该用户的字段地址
然后,填写的表格将被展平并复制到新文档中。
完成所有操作后,文档将保存为result.pdf
//b
static void Main(字符串[]args)
{
列表用户=新列表{“彼得”、“约翰”、“卡尔”};
byte[]result=createPdf(用户,“untitled-1.pdf”);
writealBytes(@“result.pdf”,result);
}
公共静态字节[]createPdf(列出用户,字符串模板文件)
{
//为用户中的每个用户创建克隆页
使用(MemoryStream MemoryStream=new MemoryStream())
{
PdfDocument pdfDoc=新的PdfDocument(新的PdfWriter(memoryStream).SetSmartMode(true));
pdfDoc.InitializeOutlines();
PDF文档srcDoc;
foreach(用户中的var u)
{
MemoryStream m=新的MemoryStream(fillForm(u,templateFile));
srcDoc=新PDF文档(新PDF阅读器(m));
//将内容复制到生成的PDF
srcDoc.CopyPagesTo(1,srcDoc.GetNumberOfPages(),pdfDoc);
}
pdfDoc.Close();
返回memoryStream.ToArray();
}
}
公共静态字节[]填充形式(字符串用户、字符串模板文件)
{
使用(var memoryStream=new memoryStream())
{
PdfReader reader=新PdfReader(模板文件);//Iput
PdfWriter writer=新的PdfWriter(memoryStream);//输出
PdfDocument pdfDoc=新PdfDocument(读写器);
PdfAcroForm form=PdfAcroForm.GetAcroForm(pdfDoc,true);
var fields=form.GetFormFields();
if(fields.ContainsKey(“地址”))
{
字段[“地址”]。设置值(用户);
}
form.flattfields();
pdfDoc.Close();
字节[]b=内存流.ToArray();
返回b;
}
}
static void Main(string[] args)
{
List<string> users = new List<string> { "Peter", "john", "Carl" };
byte[] result = createPdf(users, "untitled-1.pdf");
File.WriteAllBytes(@"result.pdf", result);
}
public static byte[] createPdf(List<string> users,string templateFile)
{
// create clone page for each user in users
using (MemoryStream memoryStream = new MemoryStream())
{
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(memoryStream).SetSmartMode(true));
pdfDoc.InitializeOutlines();
PdfDocument srcDoc;
foreach (var u in users)
{
MemoryStream m = new MemoryStream(fillForm(u,templateFile));
srcDoc = new PdfDocument(new PdfReader(m));
// copy content to the resulting PDF
srcDoc.CopyPagesTo(1, srcDoc.GetNumberOfPages(), pdfDoc);
}
pdfDoc.Close();
return memoryStream.ToArray();
}
}
public static byte[] fillForm(string user,string templateFile)
{
using (var memoryStream = new MemoryStream())
{
PdfReader reader = new PdfReader(templateFile); //Iput
PdfWriter writer = new PdfWriter(memoryStream); //output
PdfDocument pdfDoc = new PdfDocument(reader, writer);
PdfAcroForm form = PdfAcroForm.GetAcroForm(pdfDoc, true);
var fields = form.GetFormFields();
if (fields.ContainsKey("address"))
{
fields["address"].SetValue(user);
}
form.FlattenFields();
pdfDoc.Close();
byte[] b = memoryStream.ToArray();
return b;
}
}