ECMA 스크립트를 사용하여 조각이 있는 PDF 문서 생성 developing-with-output-and-forms-services-in-aem-forms

이 문서에서는 출력 서비스를 사용하여 xdp 조각을 사용하여 pdf 파일을 생성합니다. 기본 xdp와 조각은 crx 저장소에 있습니다. AEM의 파일 시스템 폴더 구조를 모방하는 것이 중요합니다. 예를 들어 xdp의 조각 폴더에서 조각을 사용하는 경우 AEM의 기본 폴더 아래에 조각 ​이라는 폴더를 만들어야 합니다. 기본 폴더에는 기본 xdp 템플릿이 포함됩니다. 예를 들어 파일 시스템에 다음 구조가 있는 경우

  • c:\xdptemplates - 여기에 기본 xdp 템플릿이 포함됩니다.
  • c:\xdptemplates\fragments - 이 폴더에는 조각이 포함되며 기본 템플릿은 아래와 같이 조각을 참조합니다.
    fragment-xdp .
  • 폴더 xdpdocuments에는 기본 템플릿과 조각 폴더의 조각이 포함됩니다.

양식 및 문서 ui를 사용하여 필요한 구조를 만들 수 있습니다.

다음은 2개의 조각을 사용하는 샘플 xdp의 폴더 구조입니다
양식문서

  • 출력 서비스 - 일반적으로 이 서비스는 xml 데이터를 xdp 템플릿 또는 pdf와 병합하여 병합된 pdf를 생성하는 데 사용됩니다. 자세한 내용은 출력 서비스에 대한 javadoc을(를) 참조하십시오. 이 샘플에서는 crx 저장소에 있는 조각을 사용하고 있습니다.

다음 ECMA 스크립트가 PDF 생성에 사용되었습니다. 코드에서 ResourceResolver 및 ResourceResolverHelper를 사용합니다. ResourceResolver가 필요한 이유는 이 코드가 사용자 컨텍스트 외부에서 실행되기 때문입니다.

var inputMap = processorContext.getInputMap();
var itr = inputMap.entrySet().iterator();
var entry = inputMap.entrySet().iterator().next();
var xmlData = inputMap.get(entry.getKey());
log.info("Got XML Data File");

var resourceResolverHelper = sling.getService(Packages.com.adobe.granite.resourceresolverhelper.ResourceResolverHelper);
var aemDemoListings = sling.getService(Packages.com.mergeandfuse.getserviceuserresolver.GetResolver);
log.info("Got service resolver");
var resourceResolver = aemDemoListings.getFormsServiceResolver();
//The ResourceResolverHelper execute's the following code within the context of the resourceResolver
resourceResolverHelper.callWith(resourceResolver, {call: function()
       {
             //var statement = new Packages.com.adobe.aemfd.docmanager.Document("/content/dam/formsanddocuments/xdpdocuments/main.xdp",resourceResolver);
               var outputService = sling.getService(Packages.com.adobe.fd.output.api.OutputService);
            var pdfOutputOptions = new Packages.com.adobe.fd.output.api.PDFOutputOptions();
            pdfOutputOptions.setContentRoot("crx:///content/dam/formsanddocuments/xdpdocuments");
            pdfOutputOptions.setAcrobatVersion(Packages.com.adobe.fd.output.api.AcrobatVersion.Acrobat_11);
            var dataMergedDocument = outputService.generatePDFOutput("main.xdp",xmlData,pdfOutputOptions);
               //var dataMergedDocument = outputService.generatePDFOutput(statement,xmlData,pdfOutputOptions);
            processorContext.setResult("mergeddocument.pdf",dataMergedDocument);
            log.info("Generated the pdf document with fragments");
      }

 });

시스템에서 샘플 패키지를 테스트하려면

recommendation-more-help
8de24117-1378-413c-a581-01e660b7163e