적응형 Forms이 포함된 바코드 서비스 barcode-service-with-adaptive-forms

이 문서에서는 Barcode Service를 사용하여 적응형 양식을 채우는 방법을 보여줍니다. 사용 사례는 다음과 같습니다.

  1. 사용자가 바코드가 포함된 PDF을 적응형 양식 첨부 파일로 추가합니다.
  2. 첨부 파일의 경로가 서블릿으로 전송됩니다.
  3. 서블릿이 바코드를 디코딩하고 데이터를 JSON 형식으로 반환합니다.
  4. 그런 다음 디코딩된 데이터를 사용하여 적응형 양식이 채워집니다

다음 코드는 바코드를 디코딩하고 디코딩된 값으로 JSON 개체를 채웁니다. 그런 다음 서블릿은 호출하는 애플리케이션에 대한 응답으로 JSON 개체를 반환합니다.

public JSONObject extractBarCode(Document pdfDocument) {
  // TODO Auto-generated method stub
  try {
   org.w3c.dom.Document result = barcodeService.decode(pdfDocument, true, false, false, false, false, false,
     false, false, CharSet.UTF_8);
   List<org.w3c.dom.Document> listResult = barcodeService.extractToXML(result, Delimiter.Carriage_Return,
     Delimiter.Tab, XMLFormat.XDP);
   log.debug("the form1 lenght is " + listResult.get(0).getElementsByTagName("form1").getLength());
   JSONObject decodedData = new JSONObject();
   decodedData.put("name", listResult.get(0).getElementsByTagName("Name").item(0).getTextContent());
   decodedData.put("address", listResult.get(0).getElementsByTagName("Address").item(0).getTextContent());
   decodedData.put("city", listResult.get(0).getElementsByTagName("City").item(0).getTextContent());
   decodedData.put("state", listResult.get(0).getElementsByTagName("State").item(0).getTextContent());
   decodedData.put("zipCode", listResult.get(0).getElementsByTagName("ZipCode").item(0).getTextContent());
   decodedData.put("country", listResult.get(0).getElementsByTagName("Country").item(0).getTextContent());
   log.debug("The JSON Object is " + decodedData.toString());
   return decodedData;
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return null;
 }

다음은 서블릿 코드입니다. 이 서블릿은 사용자가 적응형 양식에 첨부 파일을 추가할 때 호출됩니다. 서블릿은 JSON 개체를 호출 응용 프로그램으로 되돌립니다. 그런 다음 호출 애플리케이션이 적응형 양식을 JSON 오브젝트에서 추출된 값으로 채웁니다.

@Component(service = Servlet.class, property = {

  "sling.servlet.methods=get",

  "sling.servlet.paths=/bin/decodebarcode"

})
public class DecodeBarCode extends SlingSafeMethodsServlet {
 @Reference
 DocumentServices documentServices;
 @Reference
 GetResolver getResolver;
 private static final Logger log = LoggerFactory.getLogger(DecodeBarCode.class);
 private static final long serialVersionUID = 1L;

 protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) {
  ResourceResolver fd = getResolver.getFormsServiceResolver();
  Node pdfDoc = fd.getResource(request.getParameter("pdfPath")).adaptTo(Node.class);
  Document pdfDocument = null;
  log.debug("The path of the pdf I got was " + request.getParameter("pdfPath"));
  try {
   pdfDocument = new Document(pdfDoc.getPath());
   JSONObject decodedData = documentServices.extractBarCode(pdfDocument);
   response.setContentType("application/json");
   response.setHeader("Cache-Control", "nocache");
   response.setCharacterEncoding("utf-8");
   PrintWriter out = null;
   out = response.getWriter();
   out.println(decodedData.toString());
  } catch (RepositoryException | IOException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }
 }
}

다음 코드는 적응형 양식에서 참조하는 클라이언트 라이브러리의 일부입니다. 사용자가 적응형 양식에 첨부 파일을 추가하면 이 코드가 트리거됩니다. 코드는 GET 매개 변수에서 전달된 첨부 파일의 경로를 사용하여 서블릿을 호출합니다. 그런 다음 서블릿 호출에서 수신된 데이터를 사용하여 적응형 양식을 채웁니다.

$(document).ready(function()
   {
       guideBridge.on("elementValueChanged",function(event,data){
             if(data.target.name=="fileAttachment")
         {
             window.guideBridge.getFileAttachmentsInfo({
        success:function(list)
                 {
                     console.log(list[0].name + " "+ list[0].path);
                      const getFormNames = '/bin/decodebarcode?pdfPath='+list[0].path;
      $.getJSON(getFormNames, function (data) {
                            console.log(data);
                            var nameField = window.guideBridge.resolveNode("guide[0].guide1[0].guideRootPanel[0].Name[0]");
                            nameField.value = data.name;
                            var addressField = window.guideBridge.resolveNode("guide[0].guide1[0].guideRootPanel[0].Address[0]");
                            addressField.value = data.address;
                            var cityField = window.guideBridge.resolveNode("guide[0].guide1[0].guideRootPanel[0].City[0]");
                            cityField.value = data.city;
                            var stateField = window.guideBridge.resolveNode("guide[0].guide1[0].guideRootPanel[0].State[0]");
                            stateField.value = data.state;
                             var zipField = window.guideBridge.resolveNode("guide[0].guide1[0].guideRootPanel[0].Zip[0]");
                            zipField.value = data.zipCode;
                            var countryField = window.guideBridge.resolveNode("guide[0].guide1[0].guideRootPanel[0].Country[0]");
                            countryField.value = data.country;
                        });
                        }
                  });
             }
         });
        });
NOTE
이 패키지에 포함된 적응형 양식은 AEM Forms 6.4를 사용하여 빌드되었습니다. AEM Forms 6.3 환경에서 이 패키지를 사용하려면 AEM Form 6.3에서 적응형 양식을 만드십시오

12행 - 서비스 확인자를 가져오는 사용자 지정 코드. 이 번들은 이 문서 에셋의 일부로 포함됩니다.

23행 - DocumentServices extractBarCode 메서드를 호출하여 디코딩된 데이터로 채워진 JSON 개체를 가져옵니다.

시스템에서 이 작업을 실행하려면 다음 단계를 따르십시오.

  1. BarcodeService.zip 다운로드 및 패키지 관리자를 사용하여 AEM으로 가져오기
  2. 사용자 지정 DocumentServices 번들 다운로드 및 설치
  3. DevelopingWithServiceUser 번들 다운로드 및 설치
  4. 샘플 PDF 양식 다운로드
  5. 브라우저를 샘플 적응형 양식(으)로 지정
  6. 제공된 샘플 PDF 업로드
  7. 데이터로 채워진 양식이 표시됩니다
recommendation-more-help
8de24117-1378-413c-a581-01e660b7163e