PdfSharp:v1.50.5147,.NET Framework:v4.5.1
一、PDF模板
在开始前,我觉得有必要简单说一下PDF模板
制作PDF模板的工具有很多,随便找一款就行(我这里用迅捷PDF编辑器免费试用版,带水印)
添加文本(字段名)
1、选择工具栏 添加
2、选择 添加文本工具
3、在拖出来的类似文本框的东西里面输入文本即可
表单制作
1、选择工具栏上的编辑表单
2、选择要添加的表单控件(文本框、单选框、多选框和下拉列表等)
3、选择属性
4、在属性面板输入域名(控件名,在代码里面根据这个写入文本)
这样一个可在代码中写入文本的控件就做好了
其他的以此类推,就不一一说明了
很多东西都在属性面板里面,找找就有
大概出来一个这个模样的模板
二、导出PDF
导入PdfSharp,用NuGget就行
代码很简单,就是根据给出的PDF路径初始化PdfSharp.Pdf.PdfDocument
然后拿到他的Form(PdfSharp.Pdf.AcroForms.PdfAcroForm)
根据字段名实例化一个字段,给他赋值就可以了
可以在form.Fields.Names找到PDF里面的所有控件的字段名
代码如下
using System;
using System.IO;
namespace PrintPDF
{
class Program
{
static void Main(string[] args)
{
string templateFilePath = @"E:\TestData\t\Temp211014.pdf";
PdfSharp.Pdf.PdfDocument doc = PdfSharp.Pdf.IO.PdfReader.Open(templateFilePath, PdfSharp.Pdf.IO.PdfDocumentOpenMode.Modify);
PdfSharp.Pdf.AcroForms.PdfAcroForm form = doc.AcroForm;
if (form.Elements.ContainsKey("/NeedAppearances"))
{
form.Elements["/NeedAppearances"] = new PdfSharp.Pdf.PdfBoolean(true);
}
else
{
form.Elements.Add("/NeedAppearances", new PdfSharp.Pdf.PdfBoolean(true));
}
PdfSharp.Pdf.AcroForms.PdfTextField txtName = (PdfSharp.Pdf.AcroForms.PdfTextField)(form.Fields["txtName"]);
txtName.Value = new PdfSharp.Pdf.PdfString("郑小晨");
PdfSharp.Pdf.AcroForms.PdfTextField txtAge = (PdfSharp.Pdf.AcroForms.PdfTextField)(form.Fields["txtAge"]);
txtAge.Value = new PdfSharp.Pdf.PdfString("18");
PdfSharp.Pdf.AcroForms.PdfTextField txtAddress = (PdfSharp.Pdf.AcroForms.PdfTextField)(form.Fields["txtAddress"]);
txtAddress.Value = new PdfSharp.Pdf.PdfString("广州市天河区xx村1001号");
PdfSharp.Pdf.AcroForms.PdfTextField txtEmail = (PdfSharp.Pdf.AcroForms.PdfTextField)(form.Fields["txtEmail"]);
txtEmail.Value = new PdfSharp.Pdf.PdfString("zxc@163.com");
PdfSharp.Pdf.AcroForms.PdfTextField txtMobile = (PdfSharp.Pdf.AcroForms.PdfTextField)(form.Fields["txtMobile"]);
txtMobile.Value = new PdfSharp.Pdf.PdfString("13888888888");
PdfSharp.Pdf.AcroForms.PdfCheckBoxField cbxMan = (PdfSharp.Pdf.AcroForms.PdfCheckBoxField)(form.Fields["cbxMan"]);
cbxMan.Checked = true;
doc.Save(@"E:\TestData\t\s" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".pdf");
//byte[] fileContents = null;
//using (MemoryStream stream = new MemoryStream())
//{
// doc.Save(stream, true);
// fileContents = stream.ToArray();
//}
}
}
}
打印出来的PDF
在WPS打开PDF
PDFsharp Samples - PDFsharp and MigraDoc Wikihttp://www.pdfsharp.net/wiki/PDFsharpSamples.ashx