對 PDF 檔案進行數位簽名

PDF 文件是資訊共享中廣泛使用的文件格式之一。它們通常具有機密和法律價值,例如合約。為了確保文件的完整性並避免任何偽造,我們添加了數位簽名。它還確保文件沒有被其作者以外的其他人修改,並驗證作者是我們期望的人而不是其他人。

PDF 中的數位簽名相當於紙本文件上的墨水簽名,但更安全。此資訊放在文件內部,流行的 PDF 閱讀器可以檢查文件是否被未知人員修改。在本文中,我們將討論如何使用 PHP 在線對 PDF 文件進行數位簽名的詳細資訊。

使用 cURL 命令存取 API

我們的 API 是根據 REST 架構原則建構的,因此也可以透過 cURL 指令存取它們。請注意,我們的 API 僅供授權人員訪問,因此在訪問 API 之前,您需要先訪問 Aspose.Cloud 儀表板,如果您有 GitHub 或 Google 帳戶,只需註冊即可。否則,請點擊建立新帳戶按鈕並提供所需資訊。現在使用憑證登入儀表板並從儀表板展開應用程式部分並向下捲動至用戶端憑證部分以查看用戶端 ID 和用戶端金鑰詳細資訊。

現在下一步是產生 JSON Web Token (JWT),以便可以透過命令提示字元存取 API。相同的 JWT 令牌用於透過 cURL 命令存取 API。

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"

透過 PHP SDK 存取 API

為了方便希望透過 PHP 程式碼以程式設計方式處理 PDF 檔案的 PHP 客戶,我們開發了 Aspose.PDF Cloud SDK for PHP,它是 Aspose.PDF Cloud API 的包裝器。我們可以使用相同的SDK來處理數位簽章並執行相關操作。此 SDK 可從 ComposerGitHub 下載。

我們現在將討論透過 Composer 安裝 Aspose.PDF Cloud SDK for PHP 的步驟。我們已經知道建議將 Composer 與 SDK 一起使用並管理您的專案依賴項。因此,一旦我們在系統上配置了編寫器,請嘗試使用以下命令安裝 Aspose.PDF Cloud SDK for PHP。

composer require aspose/pdf-sdk-php

讀取簽名字段

此 API 可讓您讀取 PDF 文件中已有的簽章欄位相關的屬性。為了讀取簽名字段,您有兩個選擇。

為了從文件的特定頁面讀取簽名字段,請嘗試使用以下 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>"

下面給出的詳細資訊和步驟解釋如何使用 PHP 程式碼從 PDF 文件的某些頁面檢索簽名欄位詳細資訊。

protected $pdfApi;
// 從 https://dashboard.aspose.cloud/ 取得 App key 和 App SID
$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;
// 從 https://dashboard.aspose.cloud/ 取得 App key 和 App SID
$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 for PHP 也提供將簽章欄位新增至 PDF 文件的功能。下面給出的程式碼片段使您能夠將簽名欄位新增至 PDF 檔案。

簽署 PDF 文件
 protected $pdfApi;
// 從 https://dashboard.aspose.cloud/ 取得 App key 和 App SID
$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 for PHP 是開源的,完整的原始碼可以從 GitHub 儲存庫下載。

請嘗試使用我們的 API,如果您遇到任何問題,請隨時透過免費的客戶支援論壇聯繫。