2010-03-04 17 views
0

这使我完全彻底坚果......基本上我有一个由TCPDF生成的PDF表单,并且希望为该PDF设置用户权限(使用setUserRights)用户可以用输入的数据保存表单。 TCPDF手册在这一点上并没有真正的帮助,并指出您需要一个“签名证书”来启用保存和其他扩展功能。TCPDF PDF表单,签名证书以及如何启用用户权限

因此,我使用OpenSSL生成了一个SSL证书和私有文件,并使用setSignature方法“导入”它们。不使用该方法Adobe Reader呻吟:

本文档启用Adobe Reader中的扩展 功能。文档 自创建以来已被更改为 ,并且使用扩展功能的时间更长,因此不再使用 。请联系 作者为原始版本 本文档。

当所需的setSignature方法设置为消息未出现,但Reader仍无法保存PDF。

$this->Pdf->setSignature("file:///certificates/forms.crt", "file:///certificates/forms.key", "somepassword", "", 3); 

然后我设置完全用户权限:

$this->Pdf->setUserRights(true, '/FullSave', '/Create/Delete/Modify/Copy/Import/Export', '/Add/Delete/FillIn/Import/Export/SubmitStandalone/SpawnTemplate', '/Modify'); 

有没有人用这种特殊的功能工作,能够指出我在做什么错在这里?

更新

TCPDF包括an example使用示范证书。但我不清楚如何获得这样的证书。使用演示版本仍然不允许我正确设置用户权限。

回答

0

我希望回答我自己的问题是适当的。我在TCPDF论坛上问过这个问题,并得到了TCPDF维护者之一的答案。

基本上答案是它不能做到。虽然文件指出:

名称为 文件指定其他 广泛的文档使用权限。唯一定义的值是 “/ FullSave”,它允许用户将 保存为修改后的 表单和/或注释数据。

但是,这显然是过时的信息。它使用解决方法在Acrobat Reader 8中工作,但现在不再了。因此,唯一的解决方案是使用TCPDF生成PDF并通过Adobe Acrobat传递,并设置用户权限。由于我的应用程序是一个服务器端PDF表单生成器,我没有这个选择......或者有没有人有这个辉煌的解决方案?

0

您是否尝试过没有setUserRights调用?根据最后一个参数设置权限的文档。也许第二次调用修改了pdf,因此签名不再与PDF匹配,因为它被更改了?

+0

只设置签名不会影响文档。启用setUserRights时,Acrobat Reader仅显示消息。我不允许在任何一种情况下保存表单数据 - setUserRights是否设置。 – mensch 2010-03-09 19:25:10

2

setUserRights()在过去使用旧的Acrobat Reader版本,因为这些版本的错误。AFAIK,只有官方的Acrobat产品才能使用Adobe私钥释放用户权限。 这意味着setUserRights()不再适用,除非你是Adobe!

+0

谢谢!前一段时间我也问过TCPDF论坛的问题,并得到了上述答案。可惜的是,阅读和写作形式是一个相当普遍的特征。 – mensch 2010-08-09 13:06:36