Это означает, что вы либо используете одно и то же имя функции / класса дважды, и вам нужно переименовать один из них, или это потому, что вы использовали 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
, будет загружен только один раз, и ошибка будет устранена.
Библиотека iTextSharp открытого исходного кода позволит Вам делать это. Вот сообщение объяснение, как снабдить цифровой подписью файл PDF. Если Вы не хотите пользоваться сторонней библиотекой тогда, можно реализовать ее сами, но это могла быть жесткая задача-> можно запустить путем чтения спецификация (8.6MB)
PDFНадлежащее подписание PDF очень сложная задача. Там существуйте много файлов, которые не соответствуют спецификации PDF (поврежденный xrefs и т.д.), и Ваш код должен обработать всех их. Тогда различные версии Acrobat рассматривают определенные вещи в полях значения со знаком по-другому. Таким образом, если необходимо сделать задачу (а не учиться, как она работает), необходимо полагаться на стороннее решение, такое как наш PDFBlackbox компоненты.
Цифровая подпись 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
Потерял свой первый ответ. Возможно, вы захотите попробовать DocQ ссылка на текст У них есть собственный сертификат, и они могут сделать это для вас бесплатно/дешево, чтобы запечатать и зашифровать PDF. У них также есть API, который вы можете использовать.