Снабдите цифровой подписью [закрытые] файлы PDF

Неустранимая ошибка: Невозможно переопределить класс [имя класса]

Неустранимая ошибка: невозможно обновить [имя функции]

Это означает, что вы либо используете одно и то же имя функции / класса дважды, и вам нужно переименовать один из них, или это потому, что вы использовали require или include, где вы должны использовать require_once или include_once.

Когда класс или функция объявляется в PHP, он неизменен и не может быть позже объявлен с новым значением.

Рассмотрим следующий код:

class.php

<?php

class MyClass
{
    public function doSomething()
    {
        // do stuff here
    }
}

index.php

<?php

function do_stuff()
{
   require 'class.php';
   $obj = new MyClass;
   $obj->doSomething();
}

do_stuff();
do_stuff();

Второй вызов do_stuff() приведет к получению ошибка выше. Изменяя require на require_once, мы можем быть уверены, что файл, содержащий определение MyClass, будет загружен только один раз, и ошибка будет устранена.

53
задан Pale Blue Dot 15 July 2012 в 04:49
поделиться

4 ответа

Библиотека iTextSharp открытого исходного кода позволит Вам делать это. Вот сообщение объяснение, как снабдить цифровой подписью файл PDF. Если Вы не хотите пользоваться сторонней библиотекой тогда, можно реализовать ее сами, но это могла быть жесткая задача-> можно запустить путем чтения спецификация (8.6MB)

PDF
39
ответ дан Jeremy Thompson 7 November 2019 в 08:51
поделиться

Надлежащее подписание PDF очень сложная задача. Там существуйте много файлов, которые не соответствуют спецификации PDF (поврежденный xrefs и т.д.), и Ваш код должен обработать всех их. Тогда различные версии Acrobat рассматривают определенные вещи в полях значения со знаком по-другому. Таким образом, если необходимо сделать задачу (а не учиться, как она работает), необходимо полагаться на стороннее решение, такое как наш PDFBlackbox компоненты.

11
ответ дан Eugene Mayevski 'Allied Bits 7 November 2019 в 08:51
поделиться

Цифровая подпись PDF-документа без использования сторонних компонентов требует большой работы, поэтому ее лучше избегать.

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

Следующий пример, написанный на C#, показывает, как просто можно поставить цифровую подпись на PDF-документ с помощью ABCpdf:

Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../Rez/Authorization.pdf"));
Signature theSig = (Signature)theDoc.Form["Signature"];
theSig.Location = "Washington";
theSig.Reason = "Schedule Agreed";
theSig.Sign(Server.MapPath("../Rez/JohnSmith.pfx"), "111111");
theDoc.Save(Server.MapPath("Signed.pdf"));

Источник: Документация ABCpdf - Метод Sign

6
ответ дан 7 November 2019 в 08:51
поделиться

Потерял свой первый ответ. Возможно, вы захотите попробовать DocQ ссылка на текст У них есть собственный сертификат, и они могут сделать это для вас бесплатно/дешево, чтобы запечатать и зашифровать PDF. У них также есть API, который вы можете использовать.

1
ответ дан 7 November 2019 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: