一份有时间限制的商业文件、一份明确在 30 个日历日内有效的提案、一份在审查期结束后就无法访问的机密董事会报告、一份订阅一年的许可培训手册,一旦作为标准的不受保护的 PDF 分发,就失去了基于时间的访问控制的每一丝痕迹。今天打开它的收件人可以在下个月重新打开它。他们可以在明年重新开放。五年后他们仍然可以打开并阅读每个单词。标准 PDF 格式没有内置的按时间顺序排列的概念,也没有在定义的日期后自动过期的本机机制。
标准 PDF 文件被设计为永久、不可变的记录。创建一个在特定日历日期后主动强制其过期的文档需要实现超出核心 PDF 规范的额外逻辑层,并引入限制文档可移植性和可靠性的依赖项。
制作强制自动过期的PDF安全文档意味着要么实施基于JavaScript的日期验证例程,该例程在文件打开时执行并根据硬编码的截止日期检查当前系统日期,要么部署基于服务器的数字权限管理系统,在每次打开文档时远程验证访问权限。 WukongPDF 的PDF 加密 工具支持标准的基于密码的保护,下面的指南解释了当前可用的每种过期方法及其重要的现实限制。

基于 JavaScript 的过期:技术实现和关键限制
Adobe Acrobat 和 Acrobat Reader 支持嵌入式 JavaScript 引擎,该引擎可以在发生特定文档事件(包括显示第一页之前触发的文档打开事件)时执行自定义脚本。精心编写的脚本可以向操作系统查询当前日期,将该日期与脚本代码中嵌入的硬编码到期截止日期进行比较,并执行以下两个操作之一:如果当前日期在截止日期之前,则正常显示文档并允许完全访问,或者如果当前日期已超过截止日期,则显示一条突出的消息,说明文档已过期并以编程方式关闭文件,以防止用户阅读内容。
基于 JavaScript 的过期带有多个严重漏洞,从根本上限制了其作为安全措施的有效性。这完全取决于收件人的 PDF 查看器是否支持 JavaScript 执行并启用了 JavaScript 功能。大多数非 Adobe PDF 查看器(包括几乎所有基于浏览器的查看器和移动 PDF 应用程序)默认情况下禁用 JavaScript 作为安全预防措施,这意味着过期脚本永远不会执行,并且无论日历日期如何,文档都可以完全访问打开。即使在 Adobe Acrobat 中,任何用户都可以导航到“编辑”、“首选项”、“JavaScript”,并通过单击一个复选框来禁用 JavaScript 执行,从而永久地破坏他们打开的每个文档中的所有基于 JavaScript 的保护。最关键的是,该脚本从用户自己的计算机系统时钟读取当前日期,用户可以手动将其更改为任意日期。将计算机时钟设置回截止日期之前的日期可以再次访问文档,并且没有任何技术机制可以阻止这种时钟操作。
尝试保护 PDF
无需安装。直接在您的浏览器中工作。
数字权限管理:服务器强制的基于时间的访问控制
Adobe 的 LiveCycle Rights Management、Microsoft 的 Azure 信息保护和各种第三方文档安全服务等企业 DRM 平台在服务器基础架构级别强制执行过期操作,而不是依赖于 PDF 文件本身中嵌入的任何代码或逻辑。该文档使用存储在 DRM 服务器上(而不是文件内)的密钥进行加密。每次用户尝试打开文档时,查看者都必须建立与 DRM 身份验证服务器的网络连接,提供用户的凭据并接收临时解密授权。服务器使用自己独立维护和安全的系统时钟运行,根据文档的许可证参数检查当前日期,并授予此会话的解密权限或通过到期通知拒绝它。
DRM 提供技术上真正的过期强制执行,不易受到客户端时钟操纵或 JavaScript 禁用的影响。然而,它带来了巨大的实际摩擦,使其不适合随意或日常的文档共享。收件人在想要打开文档时必须具有有效的 Internet 连接,并且无法在任何离线环境中查看该文档。他们必须拥有在保护文档的特定 DRM 平台上注册的有效用户帐户。观看体验取决于 DRM 服务提供商的身份验证服务器的持续运行可用性,这引入了发送者和接收者都无法控制的外部依赖性。
提供有效到期且技术不复杂的实用替代方案
对于绝大多数常见的业务场景(文档应该具有明显有限的使用寿命,但内容并不能证明完整 DRM 部署的费用和摩擦是合理的),技术过期的实用程序替代方案可提供足够的现实世界保护,同时大大降低复杂性和零收件人摩擦。在每一页上添加视觉上突出的封面页或清晰可见的标题,以明确的语言明确说明文档的有效期:该提案自发布之日起有效期为 30 天,于 2025 年 12 月 31 日到期。到期是社会和合同而非技术,由持续的业务关系和专业规范而不是软件锁定强制执行。
发布明确编号和日期的修订版本,明确取代所有以前的文档,而不是试图使原始版本神奇地消失。更新版本包含当前的权威信息,并且是您主动引导所有收件人参考的版本。从技术上讲,过时的版本仍然可以打开,但明确地标记为已被取代,并在每一页上都带有显眼的对角线水印,上面写着“已取代”,或者用粗体封面页符号说明“此版本已被替换”。请参阅 2026 年 1 月 15 日的版本 2.1。无意中打开旧版本的收件人会立即明确地看到它不再是当前文档。
| 有效期方法 | 执行力度 | 被击败 |
|---|---|---|
| JavaScript 日期检查 | 弱,完全依赖观众 | 禁用 JavaScript,更改系统时钟 |
| DRM 服务器强制执行 | 强大,服务器控制每一次访问 | 网络故障甚至会阻止授权用户 |
| 封面页有效性声明 | 仅社会和契约 | 无技术强制,依赖接收者配合 |
| 带水印的替代版本 | 基于流程,直观明显 | 旧版本在技术上仍然可以访问,但标记清晰 |
在 Acrobat 中设置 JavaScript 日期过期并充分了解限制
要向 PDF 添加基于 JavaScript 的日期到期时间,同时保持对其安全限制的清晰认识,请在 Acrobat Pro 中打开 PDF,导航至“工具”菜单,选择“JavaScript”,然后选择“文档 JavaScript”以打开脚本编辑器。创建一个在文档打开事件上执行的新脚本函数。该函数从 JavaScript Date 对象中读取当前系统日期,将其与硬编码的到期日期字符串进行比较,并使用带有 Close 参数的 app.execMenuItem 函数,在当前日期超过截止日期时以编程方式关闭文档窗口。
在分发文档之前,请在系统时钟已故意设置为未来日期的计算机上测试过期行为,以确认脚本在该计算机上正确触发。然后在 Acrobat 的“首选项”中完全禁用 JavaScript 来测试同一文档,以直接观察到过期机制在该情况下没有提供保护。亲身体验这种限制对于准确地向所有文档利益相关者传达过期机制可以保证什么(更重要的是不能保证什么)至关重要。
尝试保护 PDF
无需安装。直接在您的浏览器中工作。
