TCPDF PDF-формы, подписывание сертификатов и как включить права пользователя - PullRequest
0 голосов
/ 04 марта 2010

Это сводит меня с ума и сводит меня с ума ... По сути, у меня есть форма PDF, сгенерированная TCPDF, и я хочу установить права пользователя (используя setUserRights) для этого PDF, чтобы пользователи могли сохранять форму с введенными ими данными. Руководство по TCPDF не очень полезно в данный момент, и в нем говорится, что вам нужен «сертификат подписи» для включения сохранения и других расширенных функций.

Итак, я сгенерировал SSL-сертификат и приватный, используя OpenSSL, и «импортировал» их, используя метод 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 включает пример с использованием демонстрационного сертификата. Но мне непонятно, как получить такой сертификат. Использование демо-версии по-прежнему не позволяет мне правильно устанавливать права пользователя.

Ответы [ 3 ]

2 голосов
/ 06 августа 2010

В прошлом setUserRights () работала со старыми версиями Acrobat Reader, поскольку в этих версиях была ошибка AFAIK, только официальные продукты Acrobat могут предоставлять права пользователя с помощью закрытого ключа Adobe. Это означает, что setUserRights () больше не работает, если вы не Adobe!

0 голосов
/ 11 марта 2010

Надеюсь, уместно ответить на мой собственный вопрос. Я задал этот вопрос на форумах TCPDF и получил ответ от одного из сопровождающих TCPDF.

В основном ответ таков: это невозможно. Хотя в документации указано, что:

Имена с указанием дополнительных права на использование в рамках всего документа для документ. Единственное определенное значение "/ FullSave", который позволяет пользователю сохранить документ вместе с измененным данные формы и / или аннотации.

Но это явно устаревшая информация. Он работал в Acrobat Reader 8, используя обходной путь, но теперь уже нет. Таким образом, единственным решением является создание вашего PDF с TCPDF и передача его через Adobe Acrobat и установка там прав пользователя. Поскольку мое приложение является генератором форм PDF на стороне сервера, у меня нет такой возможности ... Или у кого-нибудь есть блестящее решение для этого?

0 голосов
/ 09 марта 2010

Вы пробовали без вызова setUserRights? Согласно документам, последний параметр устанавливает права. Возможно, второй вызов изменяет PDF, и, таким образом, подпись больше не соответствует PDF, потому что он изменился?

...