C# Spire.PDF 实现pdf文件盖章
Posted 个人记录与分享
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# Spire.PDF 实现pdf文件盖章相关的知识,希望对你有一定的参考价值。
1、添加引用
通过Spire.PDF实现合同盖章,社区版dll(免费,但是只支持10页以内的pdf文档),也可以直接通过VS管理NuGet包添加dll引用,
收费版直接搜索Spire.PDF安装,免费社区版搜索FreeSpire.PDF安装
2、参数定义与调用
string pdfPath = "C:\\\\Users\\\\Administrator\\\\Desktop\\\\2月份工作报告.pdf"; string imagePath = "C:\\\\Users\\\\Administrator\\\\Desktop\\\\图片\\\\20230314161221.jpg"; string outputPath = "C:\\\\Users\\\\Administrator\\\\Desktop\\\\测试签名文件.pdf"; CreateSign(pdfPath, imagePath, outputPath, 400, 650);
3、具体盖章实现
/// <summary> /// pdf盖章 /// Spire.PDF——收费商用版 /// FreeSpire.PDF——免费社区版,但只支持10页以内的pdf文件 /// </summary> /// <param name="pdfPath">源Pdf文件地址</param> /// <param name="imagePath">盖章图片地址</param>heng\'xiang /// <param name="outputPath">盖章后重新生成的pdf地址</param> /// <param name="driftX">盖章图片横向偏移</param> /// <param name="driftY">盖章图片竖向偏移</param> /// <returns></returns> public static void CreateSign(string pdfPath, string imagePath, string outputPath, float driftX, float driftY) //创建一个PdfDocument类对象,并加载PDF文档 Spire.Pdf.PdfDocument doc = new Spire.Pdf.PdfDocument(); doc.LoadFromFile(pdfPath); //文档最后一页 Spire.Pdf.PdfPageBase page = doc.Pages[doc.Pages.Count - 1]; //新建一个PdfRubberStampAnnotation对象,指定其注释的位置和大小 Spire.Pdf.Annotations.PdfRubberStampAnnotation loStamp = new Spire.Pdf.Annotations.PdfRubberStampAnnotation( new System.Drawing.RectangleF( //盖章偏移 new System.Drawing.PointF(driftX, driftY), //盖章图片大小 new System.Drawing.SizeF(80, 80)) ); //实例化一个PdfAppearance对象,并加载作为印章的图片 Spire.Pdf.Annotations.Appearance.PdfAppearance loApprearance = new Spire.Pdf.Annotations.Appearance.PdfAppearance(loStamp); Spire.Pdf.Graphics.PdfImage image = Spire.Pdf.Graphics.PdfImage.FromFile(imagePath); //新建一个PDF模板,并在模板里绘制图片 Spire.Pdf.Graphics.PdfTemplate template = new Spire.Pdf.Graphics.PdfTemplate(150, 150); template.Graphics.DrawImage(image, 0, 0); loApprearance.Normal = template; loStamp.Appearance = loApprearance; //添加印章到PDF文档 page.AnnotationsWidget.Add(loStamp); //保存文档 doc.SaveToFile(outputPath); //直接打开文档 System.Diagnostics.Process.Start(outputPath);
4、最终效果
C# 将Word转为PDF时,设置PDF文档保护
本文以C#代码示例展示如何将Word转为PDF时,设置PDF文档保护,可设置PDF文档打开密码保护以及权限密码保护。附VB.NET代码,有需要可供参考。
程序环境:
1.Word测试文档:.docx
2. .NetFramework 4.8
3. 程序集引用:程序中需引用spire.doc.dll和spire.pdf.dll。注意这里的两个dll均来自于同一个spire.doc for .net中的文件夹路径,如本次使用的版本为9.6的包,即,两个dll文件路径为:
C:\\Program Files (x86)\\e-iceblue\\Spire.Doc\\Bin\\NET4.0\\Spire.Doc.dll
和
C:\\Program Files (x86)\\e-iceblue\\Spire.Doc\\Bin\\NET4.0\\Spire.Pdf.dll
dll引用结果如图:
C#
using Spire.Doc; using Spire.Pdf.Security; namespace WordToPDFAndEncrypt_PDF { class Program { static void Main(string[] args) { //加载Word测试文档 Document doc = new Document(); doc.LoadFromFile("test.docx"); //转为PDF时,设置PDF打开密码和权限密码 ToPdfParameterList topdf = new ToPdfParameterList(); topdf.PdfSecurity.Encrypt("open", "permission", PdfPermissionsFlags.Print | PdfPermissionsFlags.CopyContent, PdfEncryptionKeySize.Key128Bit); //将文档保存为PDF格式 doc.SaveToFile("result.pdf", topdf); System.Diagnostics.Process.Start("result.pdf"); } } }
VB.NET
Imports Spire.Doc Imports Spire.Pdf.Security Namespace WordToPDFAndEncrypt_PDF Class Program Private Shared Sub Main(args As String()) \'加载Word测试文档 Dim doc As New Document() doc.LoadFromFile("test.docx") \'转为PDF时,设置PDF打开密码和权限密码 Dim topdf As New ToPdfParameterList() topdf.PdfSecurity.Encrypt("open", "permission", PdfPermissionsFlags.Print Or PdfPermissionsFlags.CopyContent, PdfEncryptionKeySize.Key128Bit) \'将文档保存为PDF格式 doc.SaveToFile("result.pdf", topdf) System.Diagnostics.Process.Start("result.pdf") End Sub End Class End Namespace
执行程序,生成的文档路径为程序项目文件夹路径,即C:\\Users\\Administrator\\Documents\\Visual Studio 2013\\Projects\\Doc2PDF\\WordToPDFAndEncrypt_PDF\\bin\\Debug\\result.pdf,路径也可以自定义为其他路径。打开生成的PDF文件后,提示需输入密码,如下图:
输入密码打开文档后,也可以查看对PDF文档保护设置,如图:
—End—
以上是关于C# Spire.PDF 实现pdf文件盖章的主要内容,如果未能解决你的问题,请参考以下文章
c#中利用Spire.pdf控件加密解密都不让超过10页,怎么处理,才能加密解密任意大小的文件