
Документы PDF входят в число широко используемых форматов файлов для обмена информацией. Обычно они имеют конфиденциальную и юридическую ценность, например, контракт. Чтобы обеспечить целостность файлов и избежать подделок, мы добавляем цифровые подписи. Это также гарантирует, что документ не был изменен кем-то, кроме его автора, и подтверждает, что автор — тот, кого мы ожидаем, а не кто-то другой.
Цифровая подпись в PDF эквивалентна подписи чернилами на бумажном документе, но она гораздо более безопасна. Эта часть информации помещается внутрь документа, и популярные ридеры PDF могут проверить, что документ не был изменен неизвестным лицом. В этой статье мы обсудим детали того, как подписывать PDF-документы онлайн с помощью цифровой подписи в PHP.
- Доступ к API с помощью команды cURL
- Доступ к API через PHP SDK
- Прочитать поле подписи
- Добавить поля подписи с помощью 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-файл.

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, а в случае возникновения каких-либо проблем обращайтесь через бесплатные форумы поддержки клиентов.