【问题标题】:Close Browser tab if PDF has expired如果 PDF 已过期,请关闭浏览器选项卡
【发布时间】:2018-12-21 20:05:09
【问题描述】:

在 Acrobat 中打开文档时可以正常工作,但在 Google Chrome 等 Web 浏览器中打开相同的 PDF 文档时无法正常工作。 this.closeDoc() 没有在浏览器中执行。

字符串路径2 = @"D:\test\input.pdf"; 字符串输出 = @"D:\test\output.pdf";

        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();
         } 

【问题讨论】:

  • “在 Acrobat 中打开文档时效果很好” - 任何具有基本技术背景的人都知道,他只需要在 Acrobat 中停用 JavaScript 即可绕过该机制。
  • @mkl 你能建议我如何保护它或在到期日后使 pdf 损坏
  • 一种选择是使用专业的 DRM 解决方案。如果您不希望这样,毕竟它要花钱,您可以尝试将处于不可读状态的 PDF 发送给用户(例如,用一些固定图像覆盖每个页面,或者将每个页面的媒体框移到使用区域之外,或类似的东西)并且只有在成功检查的情况下(您上面的 else {} 分支)才能使 PDF 可读(通过迭代页面并删除覆盖图像或更正媒体框)。这当然意味着没有启用 JavaScript 的 PDF 查看器的用户根本无法阅读 PDF……
  • 这样的机制显然也可以被规避,但这需要非法用户做更多的工作。
  • @mkl 如果你能提供一些很棒的例子,那听起来不错

标签: javascript c# itext adobe spire.doc


【解决方案1】:

你在尝试“window.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{}";

【讨论】:

  • 是的,但是在浏览器弹出文件上的确定(单击)之后,它会打开。 @Jordi 上述解决方案不起作用
猜你喜欢
  • 2015-12-27
  • 2014-08-14
  • 1970-01-01
  • 1970-01-01
  • 2013-12-24
  • 2013-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多