如何使用 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)中正确配置所有依赖项。
- 验证输入和输出文档的文件路径是否准确。
- 确认您的自定义加密逻辑已正确实现和集成。
实际应用
以下是此功能的一些实际应用:
- 法律文件签署: 使用嵌入二维码的元数据安全地签署合同,以确保真实性。
- 发票处理: 自动向发票添加加密签名,以增加安全性和可追溯性。
- 物流追踪: 使用签名文件进行货运追踪,在二维码中嵌入唯一标识符和时间戳。
- 学术认证: 使用二维码签名将学生信息安全地嵌入到数字证书中