Цифровая подпись PDF-файлов

Документы PDF входят в число широко используемых форматов файлов для обмена информацией. Обычно они имеют конфиденциальную и юридическую ценность, например, контракт. Чтобы обеспечить целостность файлов и избежать подделок, мы добавляем цифровые подписи. Это также гарантирует, что документ не был изменен кем-то, кроме его автора, и подтверждает, что автор — тот, кого мы ожидаем, а не кто-то другой.

Цифровая подпись в PDF эквивалентна подписи чернилами на бумажном документе, но она гораздо более безопасна. Эта часть информации помещается внутрь документа, и популярные ридеры PDF могут проверить, что документ не был изменен неизвестным лицом. В этой статье мы обсудим детали того, как подписывать PDF-документы онлайн с помощью цифровой подписи в PHP.

Доступ к API с помощью команды cURL

Наши API построены в соответствии с принципами архитектуры REST, поэтому к ним также можно получить доступ с помощью команд cURL. Обратите внимание, что наши API доступны только авторизованным лицам, поэтому перед доступом к API вам необходимо сначала посетить панель управления Aspose.Cloud и, если у вас есть учетная запись GitHub или Google, просто зарегистрироваться. В противном случае нажмите кнопку Создать новую учетную запись и укажите необходимую информацию. Теперь войдите в панель управления, используя учетные данные, разверните раздел «Приложения» на панели управления и прокрутите вниз до раздела «Учетные данные клиента», чтобы увидеть сведения об идентификаторе клиента и секретном ключе клиента.

Теперь следующим шагом будет генерация JSON Web Token (JWT), чтобы API были доступны через командную строку. Тот же самый JWT-токен используется для доступа к API через команды cURL.

curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4&client_secret=d87269aade6a46cdc295b711e26809af" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"

Доступ к API через PHP SDK

Чтобы облегчить нашим PHP-клиентам, желающим программно обрабатывать PDF-файлы через PHP-код, мы разработали Aspose.PDF Cloud SDK для PHP, который является оболочкой вокруг Aspose.PDF Cloud API. Мы можем использовать тот же SDK для обработки цифровых подписей и выполнения связанных операций. SDK доступен для загрузки с Composer и GitHub.

Теперь мы обсудим шаги по установке Aspose.PDF Cloud SDK для PHP через Composer. Мы уже знаем, что Composer рекомендуется использовать с SDK и для управления зависимостями вашего проекта. Поэтому после настройки Composer в вашей системе попробуйте использовать следующую команду для установки Aspose.PDF Cloud SDK для PHP.

composer require aspose/pdf-sdk-php

Прочитать поля подписи

API позволяет вам читать свойства, связанные с полями подписи, которые уже доступны в документах PDF. Чтобы прочитать поле подписи, у вас есть два варианта.

  • Считывание полей подписи с определенной страницы документа с помощью API GetPageSignatureFields
  • Чтение поля подписи документа по имени с помощью API GetSignatureField

Чтобы прочитать поля подписи с определенной страницы документа, попробуйте использовать следующую команду cURL. Обратите внимание, что в следующей команде BlankWithSignature.pdf — это исходный файл PDF:

curl -X GET "https://api.aspose.cloud/v3.0/pdf/BlankWithSignature.pdf/page/1/fields/signature" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>"

Теперь, чтобы прочитать свойства, связанные с определенным полем подписи в документе, попробуйте использовать следующую команду, в которой мы указываем имя определенного поля подписи в качестве аргумента.

curl -X GET "https://api.aspose.cloud/v3.0/pdf/BlankWithSignature.pdf/fields/signature/Signature1" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>"

Приведенные ниже сведения и шаги объясняют, как можно извлечь данные поля подписи с определенных страниц PDF-документов с помощью PHP-кода.

protected $pdfApi;
// Получите ключ приложения и SID приложения с https://dashboard.aspose.cloud/
$appSid = '';
$appKey = '';
$host = 'https://api.aspose.cloud/v3.0';

// объект конфигурации
$this->config = new Configuration();
$this->config->setAppKey($appKey);
$this->config->setAppSid($appSid);
$this->config->setHost($host);

// создать экземпляр PdfApi
$this->pdfApi = new PdfApi(null, $this->config);

// имя входного PDF-документа
$name = 'BlankWithSignature.pdf';
// загрузить файл в облачное хранилище 
$this->uploadFile($name);

// номер страницы в документе
$pageNumber = 1;

// вызов метода API для извлечения полей подписи из документа
$response = $this->pdfApi->getPageSignatureFields($name, $pageNumber, null, $this->tempFolder);
$this->assertEquals(200, $response->getCode());

Приведенный код показывает, как можно получить информацию для определенных полей подписи в файле PDF.

protected $pdfApi;
// Получите ключ приложения и SID приложения с https://dashboard.aspose.cloud/
$appSid = '';
$appKey = '';
$host = 'https://api.aspose.cloud/v3.0';

// объект конфигурации
$this->config = new Configuration();
$this->config->setAppKey($appKey);
$this->config->setAppSid($appSid);
$this->config->setHost($host);

// создать экземпляр PdfApi
$this->pdfApi = new PdfApi(null, $this->config);

// имя входного PDF-документа
$name = 'BlankWithSignature.pdf';
// загрузить PDF в облачное хранилище
$this->uploadFile($name);

// поле подписи для извлечения информации
$fieldName = 'Signature1';

// вызов API для получения данных поля подписи
$response = $this->pdfApi->getSignatureField($name, $fieldName, null, $this->tempFolder);
$this->assertEquals(200, $response->getCode());

Добавить поля подписи с помощью PHP

Aspose.PDF Cloud SDK для PHP также предлагает возможности добавления полей подписи в PDF-документ. Приведенный ниже фрагмент кода позволяет добавить поле подписи в PDF-файл.

Подпишите PDF-файл
 protected $pdfApi;
// Получите ключ приложения и SID приложения с https://dashboard.aspose.cloud/
$appSid = '';
$appKey = '';
$host = 'https://api.aspose.cloud/v3.0';

// объект конфигурации
$this->config = new Configuration();
$this->config->setAppKey($appKey);
$this->config->setAppSid($appSid);
$this->config->setHost($host);

// создать экземпляр PdfApi
$this->pdfApi = new PdfApi(null, $this->config);

// имя входного PDF-документа
$name = 'BlankWithSignature.pdf';

// загрузить файл в облачное хранилище
$this->uploadFile($name);

$signatureFileName = '33226.p12';
$this->uploadFile($signatureFileName);

$folder = $this->tempFolder;

$signature = new Aspose\PDF\Model\Signature();
$signature->setAuthority('Nayyer Shahbaz');
$signature->setContact('nayyer.shahbaz@aspose.com');
$signature->setDate('08/01/2012 12:15:00.000 PM');
$signature->setFormFieldName('Signature1');
$signature->setLocation('Australia');
$signature->setPassword('sIikZSmz');
$signature->setRectangle(new Aspose\PDF\Model\Rectangle(['llx' => 100, 'lly' => 100, 'urx' => 0, 'ury' => 0]));
$signature->setSignaturePath($folder . '/' . $signatureFileName);
$signature->setSignatureType(Aspose\PDF\Model\SignatureType::PKCS7);
$signature->setVisible(true);
$signature->setShowProperties(false);

$field = new Aspose\PDF\Model\SignatureField();
$field->setPartialName('sign1');
// индекс страницы, где необходимо добавить поле подписи
$field->setPageIndex(1);
$field->setSignature($signature);
// укажите прямоугольную область для поля Подпись
$field->setRect(new Aspose\PDF\Model\Rectangle(['llx' => 100, 'lly' => 100, 'urx' => 160, 'ury' => 140]));

// вызовите API для добавления поля подписи
$response = $this->pdfApi->postSignatureField($name, $field, null, $this->tempFolder);
$this->assertEquals(200, $response->getCode());

Заключение

В этом блоге мы обсудили концепции работы с цифровыми подписями в документах PDF. Мы узнали, как извлекать информацию, связанную с существующими полями подписи, а также как добавлять новые поля подписи в документ. Обратите внимание, что Aspose.PDF Cloud SDK для PHP имеет открытый исходный код, и полный исходный код можно загрузить из репозитория GitHub.

Попробуйте использовать наши API, а в случае возникновения каких-либо проблем обращайтесь через бесплатные форумы поддержки клиентов.