C# 创建 Word 并另存为PDF格式

简介

软件开发人员在开发应用程序时,常需要操作Word和PDF文档。在本文中,我将从免费Spire.Office里添加Spire.doc.dll和Spire.PDF.dll来演示如何使用邮件合并创建漂亮的Word文档,然后将这个Word文档另存为PDF文件格式,并为生成的PDF文件添加可见的数字签名来达到保护文档的目的。

步骤:创建word模板---邮件合并文本和图片---word保存为PDF--添加PDF数字签名

创建Word邮件合并模板

首先我们需要制作一个主文档,主文档是指在Word的邮件合并功能中,所含文本和图片对合并文档的每个版本都相同的文档,例如,信息库中的姓名,电话等。

//创建Document实例
Document document = new Document();
//添加节
Section section = document.AddSection();
//添加段落
Paragraph paragraph = section.AddParagraph();

//添加文本
paragraph.AppendText("\n姓名:");
//添加合并域“Name”
paragraph.AppendField("Name",FieldType.FieldMergeField);

//添加文本
paragraph.AppendText("\n电话:");
//添加合并域"Phone"
paragraph.AppendField("Phone",FieldType.FieldMergeField);

//添加文本
paragraph.AppendText("\n部门:");
//添加合并域"Department"
paragraph.AppendField("Department",FieldType.FieldMergeField);

//添加文本
paragraph.AppendText("\n照片:");
//添加合并域"Image:Photo"
paragraph.AppendField("Image:Photo",FieldType.FieldMergeField);

//保存模板文档
document.SaveToFile("Template.docx",FileFormat.Docx2013);


合并文本和图片到模板。

Word的邮件合并是一个非常强大的功能,常被应用于制作大量相似的文档。通过使用它,开发人员可以用定制的数据填充Word

static void Main(string[] args)
{
    //载入模板文档 
    Document doc = new Document();
doc.LoadFromFile(@"Template.docx");

    var textFieldNames = new string[] { "Name", "Phone", "Department" };
    var textFieldValues = new string[] { "李 梓", "15581678920", "技 术 支 持" };

 
    var imageFieldNames = new string[] { "Photo" };
    var imageFieldValues = new string[] { "image.jpg" };

       //合并文本到模板
doc.MailMerge.Execute(textFieldNames, textFieldValues);

    //创建合并图片自定义事件
doc.MailMerge.MergeImageField += new MergeImageFieldEventHandler(MailMerge_MergeImageField);

    //合并图片到模板
    doc.MailMerge.Execute(imageFieldNames, imageFieldValues);

    //保存文档
    doc.SaveToFile("result.docx", FileFormat.Docx);
}

//载入图片
static void MailMerge_MergeImageField(object sender, MergeImageFieldEventArgs field)
 {
   string filePath = field.FieldValue as string;
   if (!string.IsNullOrEmpty(filePath))
    {
      field.Image = Image.FromFile(filePath);
     }
  }
 

将word文档保存为PDF

转换功能作为Spire.Doc产品的一个主要亮点,Spire.Doc支持将 Word文件转换为PDF、HTML、XPS、SVG、Text、图片和XML文件(Word文件的格式可以是.doc,也可以是.docx)。这里我们将直接调用SaveToFile方法将word另存为PDF.

static void Main(string[] args)
{
    //载入Sample文档 
    Document doc = new Document();
    doc.LoadFromFile("result.docx");

    doc.SaveToFile("WordtoPDF.PDF", FileFormat.PDF);

}


添加PDF数字签名

为防止文件被恶意篡改,并确保PDF文档的权威性,这里我们需要对PDF进行数字签名。当我们用PFX加密证书添加签名时,请务必保证PFX证书的有效性。

//初始化一个PdfDocument实例
PdfDocument doc = new PdfDocument();

//加载PDF文档
doc.LoadFromFile("WordtoPDF.PDF");

//根据证书实例化一个PdfCertificate对象
PdfCertificate cert = new PdfCertificate("Demo.pfx", "eiceblue");

//在指定页面添加数字签名
PdfSignature signature = new PdfSignature(doc, doc.Pages[0], cert, "Signature1");

//设置签名的位置和大小
signature.Bounds = new RectangleF(new PointF(200, 300), new SizeF(180, 90));

//设置签名内容
signature.IsTag = true;
signature.DigitalSignerLable = "Digitally signed by: ";
signature.DigitalSigner = "Gary";
signature.LocationInfoLabel = "Location:";
signature.LocationInfo = "CN";
signature.ReasonLabel = "Reason: ";
signature.Reason = "Ensure authenticity";
signature.DateLabel = "Date: ";
signature.Date = DateTime.Now;
signature.ContactInfoLabel = "Contact Number: ";
signature.ContactInfo = "028-81705109";

//设置被签名文档的编辑权限
signature.DocumentPermissions = PdfCertificationFlags.AllowFormFill | PdfCertificationFlags.ForbidChanges;

//保存文档
doc.SaveToFile("数字签名.pdf");


至止,该项目已全部完成。在这个项目中,我们先用Spire.Doc从头开始创建了一个新的word文档模板,并通过Mailmerge 功能,合并了文本和图片到文档并将生成的word文档转换给PDF格式。为了保证数据安全性,我又调用Spire.PDF为PDF结果文档添加了可视化数字签名。全程使用纯代码操作,无需安装任何第三方插件及Microsoftword或AdobeAcrobat.

猜你喜欢

转载自blog.csdn.net/Miaonly/article/details/80081971
今日推荐