飞道的博客

C#实现给PDF文档设置过期时间

677人阅读  评论(0)

目录

前情提要

环境搭配

踩坑

采用环境

代码实现

相关操作

代码结果

后期探查


前情提要

接触的事情奇奇怪怪,我学得东西也是奇奇怪怪。

我需要搭建环境测试代码是否能成功操作大型的pdf文件。

环境搭配

踩坑

visual studio code就别想了,这玩意没法下载相关的pdf的依赖库

IntelliJ IDEA也别想,这个不支持C#

visual studio真是大爷,安装几台的虚拟机,都说不支持当前的windows 10系统。

要说为什么了话,因为这些坑,我自己一个个去趟过去。。。

采用环境

win10的2016企业版

visual studio2022

在visual studio2022中,工具->管理NuGet包->搜索“Free Spire.PDF”->点击安装

安装版本为7.8.9

 

代码实现

代码思路

PDF文档添加过期时间

  1. 创建PdfDocument类的对象,并通过PdfDocument.LoadFromFile(string filename)方法加载PDF文档。
  2. 通过JavaScript语句设置过期时间,过期警告信息并关闭文档等动作。
  3. 初始化PdfJavaScriptAction类的实例,并通过PdfDocument.AfterOpenAction属性设置PDF打开后执行JS语句命令。
  4. 最后,通过PdfDocument.SaveToFile(string filename, FileFormat fileFormat)方法保存PDF文档到指定路径。

  
  1. using Spire.Pdf;
  2. using Spire.Pdf.Actions;
  3. using System.Drawing;
  4. namespace SetExpiryDate
  5. {
  6. class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. //创建PdfDocument类的对象,并加载PDF文档
  11. PdfDocument pdf = new PdfDocument();
  12. pdf.LoadFromFile( "test.pdf");
  13. //通过JavaScript设置过期时间,过期警告信息并关闭文档
  14. string javaScript = "var rightNow = new Date();"
  15. + "var endDate = new Date('June 20, 2021 23:59:59');"
  16. + "if(rightNow.getTime() > endDate) {"
  17. + "app.alert('该文档已过期。请联系管理人员获取最新文档!',1);"
  18. + "this.closeDoc(); }";
  19. //根据JS创建PdfJavaScriptAction
  20. PdfJavaScriptAction js = new PdfJavaScriptAction(javaScript);
  21. //将PdfJavaScriptAction设置为文档打开后的动作
  22. pdf.AfterOpenAction = js;
  23. //保存文档
  24. pdf.SaveToFile( "SetExpiryDate.pdf", FileFormat.PDF);
  25. }
  26. }
  27. }

相关操作

新建项目,代码导入

 制作个word,然后转pdf

将test.pdf导入到项目对应位置

 然后点击运行

代码结果

 然后回到之前放test.pdf文件的文件夹中,有个叫SetExpiryDate的文件,就是我们操作之后的文件。

双击打开

后期探查

在后期反复实验的时候,我发现pdf文档不能过大,我就直接用200与300多MB的PDF去测试,均以失败告终。

然后去调试,发现是FreeSpire.PDF的问题,它限制了PDF页数不能超过10页。

不过一般论文是可以成功运行的,我有去测试过。

 


转载:https://blog.csdn.net/m0_58138734/article/details/125853908
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场