1

我有一个用户可以下载的 PDF。但是,我需要在 PDF 的文本中注明下载日期。

有没有办法在 PDF 上插入“现在日期”标记,以便在打开时动态添加?

也许您可以将 javascript 添加到 PDF 中?

4

2 回答 2

0

JS 听起来像是要走的路……主要是。

您可以在希望显示日期的位置添加一个空文本字段。当有人第一次打开 PDF 时,您可以设置该字段的值。

问题:

  1. Reader 无法保存更改的 PDF,除非它们已通过 Acrobat 启用 Reader。
  2. 该脚本将在 PDF打开时运行,而不是在下载时运行。

如果你真的想标记他们的下载时间,你需要在服务器上做。再次字段,只是这次有一些字节偏移量。

将关键字(或作者,无论如何......您未使用的文档信息字段之一)设置为一堆空白......足以容纳您最大的时间戳。在脚本中,当打开表单时,您总是将该信息字段写入您的时间戳字段。无需担心阅读器启用。

现在,要实际编写时间戳,您需要知道 PDF 中该信息字段的确切字节偏移量,并且您需要知道必须使用多少空白空间,以免意外溢出(这将是非常坏的)。当需要提供您的 PDF 时,您会吸收字节,更改时间戳的字节,然后将修改后的字节提供给服务器。

这是最有效(也是最脆弱)的方法。


如果您想以正确的方式做事,请使用您最喜欢的 PDF 库来更改表单值并提供生成的 PDF。不需要脚本,但为您的服务器做更多的工作。


注意:多个字段可以共享相同的名称。它们也自动共享相同的值。因此,如果您希望时间戳显示在每个页面上,则不需要“timestamp1”、“timestamp2”等。您可以为所有字段指定相同的名称,然后设置一次值。“你最喜欢的 PDF 库”可能无法很好地处理这个问题。iText 可以,我相信其他人也可以。

于 2011-02-09T20:23:56.397 回答
0

在将 PDF 提供给用户之前,您可以在服务器上对 PDF 进行签名并添加时间戳。签名可以每天执行一次(除非您需要更细粒度的时间戳)。这是为 PDF 添加时间戳的唯一可靠方法。此外,可以删除签名,如果要添加不易删除的水印,则另当别论。

于 2011-02-09T16:27:06.407 回答