Javascript 如果PDF已过期,请关闭浏览器选项卡
在Acrobat中打开文档时,它可以正常工作,但在Google Chrome等web浏览器中打开相同的PDF文档时,它无法正常工作。此.closeDoc()未在浏览器中执行 字符串路径2=@“D:\test\input.pdf”; 字符串输出=@“D:\test\output.pdf” 您正在尝试“window.close()”吗Javascript 如果PDF已过期,请关闭浏览器选项卡,javascript,c#,itext,adobe,spire.doc,Javascript,C#,Itext,Adobe,Spire.doc,在Acrobat中打开文档时,它可以正常工作,但在Google Chrome等web浏览器中打开相同的PDF文档时,它无法正常工作。此.closeDoc()未在浏览器中执行 字符串路径2=@“D:\test\input.pdf”; 字符串输出=@“D:\test\output.pdf” 您正在尝试“window.close()”吗 “在Acrobat中打开文档时效果很好”-任何具有基本技术背景的人都会知道,他只需要停用Acrobat中的JavaScript即可绕过该机制。@mkl您能建议我如何保
“在Acrobat中打开文档时效果很好”-任何具有基本技术背景的人都会知道,他只需要停用Acrobat中的JavaScript即可绕过该机制。@mkl您能建议我如何保护它或在过期日期后使pdf损坏一个选项是使用专业的DRM解决方案。如果你不想这样做,那毕竟是要花钱的,你可以尝试在无法阅读的状态下向用户发送PDF(例如,用固定图像覆盖每页,或者将每页的媒体框移到使用区域之外,或者类似的事情),并且只有在成功检查的情况下(上面的
else{}
分支)使PDF可读(通过在页面上迭代并删除覆盖图像或更正媒体框)。当然,这意味着没有启用JavaScript的PDF查看器的用户根本无法读取PDF…这种机制显然也可以绕过,但这需要非法用户做更多的工作。@mkl如果您能提供一些非常好的示例,听起来不错是的,但在确定(单击)浏览器弹出文件打开后@上述解决方案不起作用
if (File.Exists(path2))
{
iText.Kernel.Pdf.PdfWriter writer = new iText.Kernel.Pdf.PdfWriter(output);
iText.Kernel.Pdf.PdfDocument pdfDocument = new iText.Kernel.Pdf.PdfDocument(new iText.Kernel.Pdf.PdfReader(path2) ,writer);
pdfDocument.AddNewPage();
String js = "var rightNow = new Date();"
+ "var endDate = new Date('2017-07-13');"
+ "if(rightNow.getTime() > endDate){"
+ "app.alert('This Document has expired, please contact us for a new one.',1);"
+ "this.closeDoc();}"
+ "else{}";
pdfDocument.GetCatalog().SetOpenAction(iText.Kernel.Pdf.Action.PdfAction.CreateJavaScript(js));
pdfDocument.Close();
}
String js = "var rightNow = new Date();"
+ "var endDate = new Date('2017-07-13');"
+ "if(rightNow.getTime() > endDate){"
+ " app.alert('This Document has expired, please contact us for a new one.',1);"
+ " this.closeDoc(); "
+ " if(window){ window.close(); } "
+ "}"
+ "else{}";