如何使用 GroupDocs.Signature for Java 在 PDF 中實現自訂二維碼序列化和加密
介紹
在數位時代,安全的文件簽章對於維護資料完整性和真實性至關重要。 GroupDocs.Signature for Java 是一個功能強大的函式庫,旨在簡化文件簽章的新增。本教學將指導您使用 GroupDocs.Signature for Java 在 PDF 中實作自訂二維碼序列化和加密。
您將學到什麼:
- 如何設定和配置 Java 版 GroupDocs.Signature
- 實現二維碼簽名的自訂序列化
- 加密二維碼內的序列化數據
- 應用這些功能來保護您的文檔
在深入實施之前,讓我們確保您已準備好後續的一切。
先決條件
為了有效使用本教程,請確保滿足以下先決條件:
所需的庫和相依性:
- GroupDocs.Signature for Java 版本 23.12 或更高版本
- Maven 或 Gradle 用於依賴管理(可選)
環境設定要求:
- 您的機器上安裝了 Java 開發工具包 (JDK)
- 對 Java 程式設計有基本的了解
知識前提:
- 熟悉 Java 和物件導向程式設計概念
- 使用 Java 處理 PDF 的基礎知識
為 Java 設定 GroupDocs.Signature
首先,您需要在專案環境中設定 GroupDocs.Signature 庫。
Maven 安裝
如果您使用 Maven,請將以下依賴項新增至您的 pom.xml
文件:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Gradle 安裝
對於 Gradle 用戶,請在您的 build.gradle
文件:
implementation 'com.groupdocs:groupdocs-signature:23.12'
直接下載
或者,您可以直接從 GroupDocs.Signature Java 版本.
許可證取得步驟
- 免費試用: 首先下載試用版來測試其功能。
- 臨時執照: 如果需要,您可以申請臨時許可證,這樣您就可以不受任何限制地評估產品。
- 購買: 為了長期使用,請考慮購買完整許可證。
安裝後,在您的專案中初始化 GroupDocs.Signature:
import com.groupdocs.signature.Signature;
public class SetupGroupDocs {
public static void main(String[] args) {
Signature signature = new Signature("YOUR_DOCUMENT_DIRECTORY/sample.pdf");
// 您的程式碼在這裡...
}
}
實施指南
現在,讓我們深入研究使用 GroupDocs.Signature for Java 實作自訂二維碼序列化和加密。
二維碼簽名的自訂序列化類
概述
此功能涉及建立一個類,用於將元資料序列化為二維碼簽章。 DocumentSignatureData
類別儲存ID、作者、簽名日期、資料因素等屬性。
import com.groupdocs.signature.domain.extensions.serialization.FormatAttribute;
import java.math.BigDecimal;
import java.util.Date;
class DocumentSignatureData {
@FormatAttribute(propertyName = "SignID")
public String ID;
public void setID(String value) {
this.ID = value;
}
@FormatAttribute(propertyName = "SAuth")
public String author;
public void setAuthor(String value) {
this.author = value;
}
@FormatAttribute(propertyName = "SDate", propertyFormat = "yyyy-MM-dd")
public Date signed = new Date();
public void setSigned(Date value) {
this.signed = value;
}
@FormatAttribute(propertyName = "SDFact", propertyFormat = "N2")
public BigDecimal dataFactor = new BigDecimal(0.01);
public void setDataFactor(BigDecimal value) {
this.dataFactor = value;
}
}
解釋
- 屬性: 這
@FormatAttribute
註解指定如何將每個屬性序列化到二維碼中。- ID:簽名的唯一識別碼。
- 作者:簽署文件的人。
- 簽署日期:文件簽署的時間戳記。
- 數據因素:與簽名相關的附加數位資料。
具有自訂資料序列化和加密的二維碼簽名
概述
本節示範如何使用包含自訂序列化資料和加密的二維碼簽署文件。
import com.groupdocs.signature.Signature;
import com.groupdocs.signature.domain.Padding;
import com.groupdocs.signature.domain.enums.HorizontalAlignment;
import com.groupdocs.signature.domain.enums.VerticalAlignment;
import com.groupdocs.signature.domain.extensions.encryption.IDataEncryption;
import com.groupdocs.signature.domain.qrcodes.QrCodeTypes;
import com.groupdocs.signature.exception.GroupDocsSignatureException;
import com.groupdocs.signature.options.sign.QrCodeSignOptions;
import java.io.File;
import java.math.BigDecimal;
import java.util.Date;
import java.util.UUID;
class SignWithQRCodeCustomSerialization {
String filePath = "YOUR_DOCUMENT_DIRECTORY/sample.pdf";
String outputFilePath = new File("YOUR_OUTPUT_DIRECTORY", "SignedQRCodeCustomSerialization.pdf").getPath();
public void signDocument() throws Exception {
Signature signature = new Signature(filePath);
// 在這裡實現您的自訂加密邏輯
IDataEncryption encryption = new CustomXOREncryption();
DocumentSignatureData documentSignature = new DocumentSignatureData();
documentSignature.setID(UUID.randomUUID().toString());
documentSignature.setAuthor(System.getenv("USERNAME"));
documentSignature.setSigned(new Date());
documentSignature.setDataFactor(new BigDecimal("11.22"));
QrCodeSignOptions options = new QrCodeSignOptions();
options.setData(documentSignature);
options.setEncodeType(QrCodeTypes.QR);
options.setDataEncryption(encryption);
// 配置對齊和外觀
options.setHeight(100);
options.setWidth(100);
options.setVerticalAlignment(VerticalAlignment.Bottom);
options.setHorizontalAlignment(HorizontalAlignment.Right);
Padding padding = new Padding();
padding.setRight(10);
padding.setBottom(10);
options.setMargin(padding);
signature.sign(outputFilePath, options);
}
}
解釋
- 自訂加密: 實現您自己的加密邏輯
CustomXOREncryption
或使用任何其他方法實現IDataEncryption
。 - 簽名選項: 使用高度、寬度、填滿等選項來配置二維碼的外觀和對齊方式。
- 簽約流程: 這
signature.sign()
方法將二維碼簽名套用至文件。
故障排除提示
- 確保在建置工具(Maven/Gradle)中正確配置所有相依性。
- 驗證輸入和輸出文件的文件路徑是否準確。
- 確認您的自訂加密邏輯已正確實現和整合。
實際應用
以下是此功能的一些實際應用:
- 法律文件簽署: 使用嵌入二維碼的元資料安全地簽署合同,以確保真實性。
- 發票處理: 自動向發票新增加密簽名,以增加安全性和可追溯性。
- 物流追蹤: 使用簽名文件進行貨運追踪,在二維碼中嵌入唯一識別碼和時間戳記。
- 學術認證: 使用二維碼簽名將學生資訊安全地嵌入到數位證書中