웹 서비스 API를 사용하여 PDF 문서 분해

이 문서의 샘플 및 예제는 JEE 환경의 AEM Forms용입니다.

어셈블러 서비스 API(웹 서비스)를 사용하여 PDF 문서를 분해합니다.

  1. 프로젝트 파일을 포함합니다.

    MTOM을 사용하는 Microsoft .NET 프로젝트를 만듭니다. 서비스 참조를 설정할 때 다음 WSDL 정의를 사용해야 합니다.http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1

    노트

    localhost 을 AEM Forms을 호스팅하는 서버의 IP 주소로 바꿉니다.

  2. PDF 어셈블러 클라이언트를 만듭니다.

    • 기본 생성자를 사용하여 AssemblerServiceClient 개체를 만듭니다.

    • System.ServiceModel.EndpointAddress 생성자를 사용하여 AssemblerServiceClient.Endpoint.Address 개체를 만듭니다. WSDL을 지정하는 문자열 값을 AEM Forms 서비스에 전달합니다(예: http://localhost:8080/soap/services/AssemblerService?blob=mtom). lc_version 특성을 사용할 필요는 없습니다. 이 속성은 서비스 참조를 만들 때 사용됩니다.

    • AssemblerServiceClient.Endpoint.Binding 필드의 값을 가져와서 System.ServiceModel.BasicHttpBinding 개체를 만듭니다. 반환 값을 BasicHttpBinding(으)로 캐스팅합니다.

    • System.ServiceModel.BasicHttpBinding 개체의 MessageEncoding 필드를 WSMessageEncoding.Mtom로 설정합니다. 이 값은 MTOM이 사용되도록 합니다.

    • 다음 작업을 수행하여 기본 HTTP 인증을 활성화합니다.

      • AEM Forms 사용자 이름을 AssemblerServiceClient.ClientCredentials.UserName.UserName 필드에 지정합니다.
      • 해당 암호 값을 AssemblerServiceClient.ClientCredentials.UserName.Password 필드에 할당합니다.
      • 상수 값 HttpClientCredentialType.Basic을 필드 BasicHttpBindingSecurity.Transport.ClientCredentialType에 할당합니다.
      • 상수 값 BasicHttpSecurityMode.TransportCredentialOnly을 필드 BasicHttpBindingSecurity.Security.Mode에 할당합니다.
  3. 기존 DDX 문서를 참조합니다.

    • 생성자를 사용하여 BLOB 개체를 만듭니다. BLOB 개체는 DDX 문서를 저장하는 데 사용됩니다.
    • 해당 생성자를 호출하여 System.IO.FileStream 개체를 만듭니다. DDX 문서의 파일 위치와 파일을 열 모드를 나타내는 문자열 값을 전달합니다.
    • System.IO.FileStream 개체의 내용을 저장하는 바이트 배열을 만듭니다. System.IO.FileStream 개체의 Length 속성을 가져와서 바이트 배열의 크기를 결정할 수 있습니다.
    • System.IO.FileStream 개체의 Read 메서드를 호출하고 읽을 바이트 배열, 시작 위치 및 스트림 길이를 전달하여 바이트 배열을 스트림 데이터로 채웁니다.
    • MTOM 속성을 바이트 배열의 콘텐츠로 할당하여 BLOB 개체를 채웁니다.
  4. 분해할 PDF 문서를 참조합니다.

    • 생성자를 사용하여 BLOB 개체를 만듭니다. BLOB 개체는 입력 PDF 문서를 저장하는 데 사용됩니다. 이 BLOB 개체는 invokeOneDocument에 인수로 전달됩니다.
    • 해당 생성자를 호출하고 입력 PDF 문서의 파일 위치와 파일을 열 모드를 나타내는 문자열 값을 전달하여 System.IO.FileStream 개체를 만듭니다.
    • System.IO.FileStream 개체의 내용을 저장하는 바이트 배열을 만듭니다. System.IO.FileStream 개체의 Length 속성을 가져와서 바이트 배열의 크기를 결정할 수 있습니다.
    • System.IO.FileStream 개체의 Read 메서드를 호출하고 읽을 바이트 배열, 시작 위치 및 스트림 길이를 전달하여 바이트 배열을 스트림 데이터로 채웁니다.
    • MTOM 필드를 바이트 배열의 내용에 할당하여 BLOB 개체를 채웁니다.
    • MyMapOf_xsd_string_To_xsd_anyType 개체를 만듭니다. 이 컬렉션 개체는 디스어셈블할 PDF를 저장하는 데 사용됩니다.
    • MyMapOf_xsd_string_To_xsd_anyType_Item 개체를 만듭니다.
    • 키 이름을 나타내는 문자열 값을 MyMapOf_xsd_string_To_xsd_anyType_Item 개체의 key 필드에 할당합니다. 이 값은 DDX 문서에 지정된 PDF 소스 요소의 값과 일치해야 합니다.
    • PDF 문서를 저장하는 BLOB 개체를 MyMapOf_xsd_string_To_xsd_anyType_Item 개체의 value 필드에 할당합니다.
    • MyMapOf_xsd_string_To_xsd_anyType 개체에 MyMapOf_xsd_string_To_xsd_anyType_Item 개체를 추가합니다. MyMapOf_xsd_string_To_xsd_anyType 개체 Add 메서드를 호출하고 MyMapOf_xsd_string_To_xsd_anyType 개체를 전달합니다.
  5. 런타임 옵션을 설정합니다.

    • 생성자를 사용하여 런타임 옵션을 저장하는 AssemblerOptionSpec 개체를 만듭니다.
    • AssemblerOptionSpec 객체에 속하는 데이터 멤버에 값을 할당하여 비즈니스 요구 사항을 충족하도록 런타임 옵션을 설정합니다. 예를 들어 오류가 발생할 때 어셈블러 서비스에서 작업을 계속 처리하도록 지시하려면 falseAssemblerOptionSpec 개체의 failOnError 필드에 할당합니다.
  6. PDF 문서를 분해합니다.

    AssemblerServiceClient 개체의 invokeDDX 메서드를 호출하고 다음 값을 전달합니다.

    • PDF 문서를 분해하는 DDX 문서를 나타내는 BLOB 개체입니다
    • 디스어셈블할 PDF 문서가 포함된 MyMapOf_xsd_string_To_xsd_anyType 개체
    • 런타임 옵션을 지정하는 AssemblerOptionSpec 개체

    invokeDDX 메서드는 작업 결과 및 발생한 예외가 포함된 AssemblerResult 개체를 반환합니다.

  7. 분해된 PDF 문서를 저장합니다.

    새로 만든 PDF 문서를 가져오려면 다음 작업을 수행하십시오.

    • 분해된 PDF 문서가 포함된 Map 개체인 AssemblerResult 개체의 documents 필드에 액세스합니다.
    • Map 개체를 반복하여 각 결과 문서를 가져옵니다. 그런 다음 해당 배열 멤버의 valueBLOB에 캐스팅합니다.
    • BLOB 개체의 MTOM 속성에 액세스하여 PDF 문서를 나타내는 이진 데이터를 추출합니다. PDF 파일에 쓸 수 있는 바이트 배열을 반환합니다.

참고 항목

프로그래밍 방식으로 PDF 문서 분해

MTOM을 사용하여 AEM Forms 호출

이 페이지에서는