Costura XDP usando o serviço de montagem
Este artigo fornece os ativos para demonstrar a capacidade de compilar documentos xdp usando o serviço de montagem.
O código jsp a seguir foi gravado para inserir um subformulário chamado endereço de um documento xdp chamado endereço.xdp em um ponto de inserção chamado endereço no documento master.xdp. O xdp resultante foi salvo na pasta raiz da sua instalação do AEM.
O serviço do Assembler depende de documentos DDX válidos para descrever a manipulação de documentos do PDF. Consulte o documento de referência do DDX aqui.A página 40 tem informações sobre a compilação xdp.
javax.servlet.http.Part ddxFile = request.getPart("xdpstitching.ddx");
System.out.println("Got DDX");
java.io.InputStream ddxIS = ddxFile.getInputStream();
com.adobe.aemfd.docmanager.Document ddxDocument = new com.adobe.aemfd.docmanager.Document(ddxIS);
javax.servlet.http.Part masterXdpPart = request.getPart("masterxdp.xdp");
System.out.println("Got master xdp");
java.io.InputStream masterXdpPartIS = masterXdpPart.getInputStream();
com.adobe.aemfd.docmanager.Document masterXdpDocument = new com.adobe.aemfd.docmanager.Document(masterXdpPartIS);
javax.servlet.http.Part fragmentXDPPart = request.getPart("fragment.xdp");
System.out.println("Got fragment.xdp");
java.io.InputStream fragmentXDPPartIS = fragmentXDPPart.getInputStream();
com.adobe.aemfd.docmanager.Document fragmentXdpDocument = new com.adobe.aemfd.docmanager.Document(fragmentXDPPartIS);
java.util.Map < String, Object > mapOfDocuments = new java.util.HashMap < String, Object > ();
mapOfDocuments.put("master.xdp", masterXdpDocument);
mapOfDocuments.put("address.xdp", fragmentXdpDocument);
com.adobe.fd.assembler.service.AssemblerService assemblerService = sling.getService(com.adobe.fd.assembler.service.AssemblerService.class);
if (assemblerService != null)
System.out.println("Got assembler service");
com.adobe.fd.assembler.client.AssemblerOptionSpec aoSpec = new com.adobe.fd.assembler.client.AssemblerOptionSpec();
aoSpec.setFailOnError(true);
com.adobe.fd.assembler.client.AssemblerResult assemblerResult = assemblerService.invoke(ddxDocument, mapOfDocuments, aoSpec);
com.adobe.aemfd.docmanager.Document finalXDP = assemblerResult.getDocuments().get("stitched.xdp");
finalXDP.copyToFile(new java.io.File("stitched.xdp"));
O arquivo DDX para inserir fragmentos em outro xdp está listado abaixo. O DDX insere o subformulário address de address.xdp no ponto de inserção chamado address em master.xdp. O documento resultante denominado stitched.xdp foi salvo no sistema de arquivos.
<?xml version="1.0" encoding="UTF-8"?>
<DDX xmlns="http://ns.adobe.com/DDX/1.0/">
<XDP result="stitched.xdp">
<XDP source="master.xdp">
<XDPContent insertionPoint="address" source="address.xdp" fragment="address"/>
</XDP>
</XDP>
</DDX>
Para que esse recurso funcione no AEM Server
- Baixe o pacote de compilação XDP no sistema local.
- Carregue e instale o pacote usando o gerenciador de pacotes
- Extraia o conteúdo deste arquivo zip para obter os arquivos xdp e DDX de exemplo
incluir na lista de permissões Depois de instalar o pacote, você terá que copiar as seguintes URLs no Filtro CSRF do Adobe Granite.
- Siga as etapas mencionadas abaixo para incluir na lista de permissões os caminhos mencionados acima.
- Logon no configMgr
- Pesquisar filtro CSRF do Adobe Granite
- Adicione o seguinte caminho nas seções excluídas e salve
/content/AemFormsSamples/assemblerservice
- Procure por "Sling Referrer Filter"
- Marque a caixa de seleção "Permitir vazio". (Essa configuração deve ser somente para fins de teste)
Há várias maneiras de testar o código de amostra. O mais rápido e fácil é usar o aplicativo Postman. O Postman permite fazer solicitações POST no servidor. Instale o aplicativo Postman no sistema.
Inicie o aplicativo e insira o seguinte URL para testar a API de dados de exportação
http://localhost:4502/content/AemFormsSamples/assemblerservice.html
Forneça os seguintes parâmetros de entrada, conforme especificado na captura de tela. Você pode usar os documentos de amostra baixados anteriormente,