Java용 GroupDocs.Signature를 사용하여 PDF에서 사용자 지정 QR 코드 직렬화 및 암호화를 구현하는 방법

소개

디지털 시대에 안전한 문서 서명은 데이터 무결성과 신뢰성을 유지하는 데 필수적입니다. 문서에 서명을 추가하는 작업을 간소화하도록 설계된 강력한 라이브러리인 GroupDocs.Signature for Java를 소개합니다. 이 튜토리얼에서는 GroupDocs.Signature for Java를 사용하여 PDF에서 암호화를 포함한 사용자 지정 QR 코드 직렬화를 구현하는 방법을 안내합니다.

배울 내용:

  • Java용 GroupDocs.Signature를 설정하고 구성하는 방법
  • QR 코드 서명에 대한 사용자 정의 직렬화 구현
  • QR 코드 내의 직렬화된 데이터 암호화
  • 이러한 기능을 적용하여 문서를 보호합니다.

구현에 들어가기 전에 따라가기 위해 필요한 모든 것이 있는지 확인해 보겠습니다.

필수 조건

이 튜토리얼을 효과적으로 사용하려면 다음 전제 조건을 충족해야 합니다.

  1. 필수 라이브러리 및 종속성:

    • Java 버전 23.12 이상용 GroupDocs.Signature
    • 종속성 관리를 위한 Maven 또는 Gradle(선택 사항)
  2. 환경 설정 요구 사항:

    • 컴퓨터에 Java Development Kit(JDK)가 설치되어 있습니다.
    • Java 프로그래밍에 대한 기본적인 이해
  3. 지식 전제 조건:

    • 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'

직접 다운로드

또는 최신 버전을 다음에서 직접 다운로드할 수 있습니다. Java 릴리스용 GroupDocs.Signature.

라이센스 취득 단계

  • 무료 체험: 먼저 평가판을 다운로드하여 기능을 테스트해 보세요.
  • 임시 면허: 필요한 경우 임시 라이선스를 요청할 수 있으며, 이를 통해 아무런 제한 없이 제품을 평가할 수 있습니다.
  • 구입: 장기적으로 사용하려면 정식 라이선스를 구매하는 것을 고려하세요.

설치가 완료되면 프로젝트에서 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");
        // 여기에 코드를 입력하세요...
    }
}

구현 가이드

이제 Java용 GroupDocs.Signature를 사용하여 사용자 정의 QR 코드 직렬화 및 암호화를 구현하는 방법을 살펴보겠습니다.

QR 코드 서명을 위한 사용자 정의 직렬화 클래스

개요

이 기능은 QR 코드 서명으로 메타데이터 직렬화를 처리하는 클래스를 만드는 것과 관련이 있습니다. 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 주석은 각 속성이 QR 코드에 어떻게 직렬화되는지 지정합니다.
    • ID서명에 대한 고유 식별자입니다.
    • 작가: 문서에 서명한 사람.
    • 서명 날짜: 문서에 서명한 타임스탬프입니다.
    • 데이터 요소: 서명과 관련된 추가 숫자 데이터입니다.

사용자 정의 데이터 직렬화 및 암호화를 갖춘 QR 코드 서명

개요

이 섹션에서는 사용자 정의 직렬화 데이터와 암호화가 포함된 QR 코드를 사용하여 문서에 서명하는 방법을 보여줍니다.

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.
  • 서명 옵션: 높이, 너비, 패딩 등의 옵션을 사용하여 QR 코드의 모양과 정렬을 구성합니다.
  • 서명 과정: 그만큼 signature.sign() 이 방법은 QR 코드 서명을 문서에 적용합니다.

문제 해결 팁

  • 빌드 도구(Maven/Gradle)에서 모든 종속성이 올바르게 구성되었는지 확인하세요.
  • 입력 및 출력 문서의 파일 경로가 정확한지 확인하세요.
  • 사용자 정의 암호화 논리가 올바르게 구현되고 통합되었는지 확인하세요.

실제 응용 프로그램

이 기능을 실제로 적용한 사례는 다음과 같습니다.

  1. 법적 문서 서명: QR 코드에 메타데이터를 내장하여 계약서에 안전하게 서명하고 진위성을 보장하세요.
  2. 송장 처리: 보안과 추적성을 강화하기 위해 송장에 암호화된 서명을 자동으로 추가합니다.
  3. 물류 추적: QR 코드에 고유 식별자와 타임스탬프를 삽입하여 서명된 문서를 사용해 배송 추적을 수행합니다.
  4. 학업 자격증: QR 코드 서명을 사용하여 학생 정보를 디지털 인증서에 안전하게 삽입