0

これは私を完全に完全に狂わせています...基本的に、私はTCPDFによって生成されたPDFフォームを持っており、ユーザーが入力したデータでフォームを保存できるように、そのPDFのユーザー権限を(setUserRightsを使用して)設定したいと考えています。TCPDF マニュアルは、この特定の時点ではあまり役に立たず、保存やその他の拡張機能を有効にするには「署名証明書」が必要であると述べています。

そこで、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 には、デモ証明書を使用した例が含まれています。しかし、そのような証明書を取得する方法は私には不明です。デモ版を使用しても、ユーザーの権限を正しく設定できません。

4

3 に答える 3

2

setUserRights() は、これらのバージョンのバグのため、古い Acrobat Reader バージョンで過去に機能していました。知る限り、公式の Acrobat 製品のみが Adob​​e 秘密鍵を使用してユーザー権限を解放できます。これは、アドビでない限り setUserRights() が機能しないことを意味します。

于 2010-08-06T11:44:44.117 に答える
0

setUserRights呼び出しなしで試しましたか?ドキュメントによると、最後のパラメータが権利を設定します。おそらく、2番目の呼び出しでPDFが変更され、変更されたために署名がPDFと一致しなくなりますか?

于 2010-03-09T17:52:21.053 に答える
0

I hope it's appropriate to answer my own question. I've asked this question on the TCPDF forums and got an answer of one of the maintainers of TCPDF.

Basically the answer is that it can't be done. Although the documentation states that:

Names specifying additional document-wide usage rights for the document. The only defined value is "/FullSave", which permits a user to save the document along with modified form and/or annotation data.

But this is apparently outdated information. It worked in Acrobat Reader 8 using a workaround, but now not anymore. So the only solution is generating your PDF with TCPDF and passing it through Adobe Acrobat and set the user rights there. As my application is a server-side PDF form generator I don't have that option... Or does anybody have a brilliant solution for this?

于 2010-03-11T14:10:56.817 に答える