Show Menu
ARGOMENTI×

Precompilazione dei moduli con layout scorrevoli

Precompilazione dei moduli con layout scorrevoli

La precompilazione dei moduli consente di visualizzare i dati agli utenti all'interno di un modulo di cui è stato effettuato il rendering. Ad esempio, supponiamo che un utente acceda a un sito Web con un nome utente e una password. Se l'autenticazione ha esito positivo, l'applicazione client esegue una query a un database per ottenere informazioni sugli utenti. I dati vengono uniti nel modulo, quindi viene eseguito il rendering del modulo per l'utente. Di conseguenza, l'utente può visualizzare dati personalizzati all'interno del modulo.
La precompilazione di un modulo presenta i seguenti vantaggi:
  • Consente all'utente di visualizzare i dati personalizzati in un modulo.
  • Riduce la quantità di testo digitato dall'utente per compilare il modulo.
  • Assicura l'integrità dei dati controllando dove questi vengono inseriti.
È possibile precompilare un modulo con le due origini dati XML seguenti:
  • Un'origine dati XDP, XML conforme alla sintassi XFA (o dati XFDF per precompilare un modulo creato con Acrobat).
  • Un'origine dati XML arbitraria che contiene coppie nome/valore corrispondenti ai nomi dei campi del modulo (gli esempi in questa sezione utilizzano un'origine dati XML arbitraria).
Per ogni campo del modulo che si desidera precompilare è necessario che esista un elemento XML. Il nome dell'elemento XML deve corrispondere al nome del campo. Un elemento XML viene ignorato se non corrisponde a un campo modulo o se il nome dell'elemento XML non corrisponde al nome del campo. Non è necessario stabilire una corrispondenza con l'ordine in cui vengono visualizzati gli elementi XML, purché siano specificati tutti gli elementi XML.
Quando si precompila un modulo che contiene già dei dati, è necessario specificare i dati già visualizzati nell'origine dati XML. Si supponga che un modulo contenente 10 campi contenga dati in quattro campi. Quindi, si supponga di voler precompilare i sei campi rimanenti. In questa situazione, è necessario specificare 10 elementi XML nell'origine dati XML utilizzata per precompilare il modulo. Se specificate solo sei elementi, i quattro campi originali sono vuoti.
Ad esempio, è possibile precompilare un modulo, ad esempio il modulo di conferma di esempio. Vedere "Modulo di conferma" nel rendering di moduli PDF interattivi.
Per precompilare il modulo di conferma di esempio, è necessario creare un'origine dati XML contenente tre elementi XML che corrispondono ai tre campi del modulo. Questo modulo contiene i tre campi seguenti: FirstName , LastName , e Amount . Il primo passaggio consiste nel creare un'origine dati XML contenente elementi XML che corrispondono ai campi situati nella struttura del modulo. Il passaggio successivo consiste nell'assegnare valori di dati agli elementi XML, come illustrato nel seguente codice XML.
     <Untitled>
         <FirstName>Jerry</FirstName>
         <LastName>Johnson</LastName>
         <Amount>250000</Amount>
     </Untitled>

Dopo aver precompilato il modulo di conferma con questa origine dati XML ed eseguito il rendering del modulo, vengono visualizzati i valori dei dati assegnati agli elementi XML, come illustrato nel diagramma seguente.

Precompilazione dei moduli con layout scorrevoli

I moduli con layout scorrevole sono utili per visualizzare agli utenti una quantità indeterminata di dati. Poiché il layout del modulo si adatta automaticamente alla quantità di dati che vengono uniti, non è necessario predeterminare un layout fisso o un numero di pagine per il modulo, come è necessario fare con un modulo con layout fisso.
Un modulo viene in genere compilato con i dati ottenuti durante l'esecuzione. Di conseguenza, è possibile precompilare un modulo creando un'origine dati XML in memoria e inserendo i dati direttamente nell'origine dati XML in memoria.
Considerate un'applicazione basata sul Web, ad esempio uno store online. Al termine dell'acquisto di un acquirente online, tutti gli elementi acquistati vengono inseriti in un'origine dati XML in memoria utilizzata per precompilare un modulo. Il diagramma seguente mostra questo processo, illustrato nella tabella che segue il diagramma.
La tabella seguente descrive i passaggi descritti in questo diagramma.
Incremento
Descrizione
1
Un utente acquista elementi da uno store online basato su Web.
2
Al termine dell'acquisto degli elementi e dopo aver fatto clic sul pulsante Invia, viene creata un'origine dati XML in memoria. Gli elementi acquistati e le informazioni utente vengono inseriti nell'origine dati XML in memoria.
3
L'origine dati XML viene utilizzata per precompilare un modulo di ordine di acquisto (un esempio di questo modulo è illustrato nella tabella seguente).
4
Il modulo di ordine di acquisto viene rappresentato nel browser Web del client.
Nel diagramma seguente è riportato un esempio di modulo di ordine di acquisto. Le informazioni contenute nella tabella possono adattarsi al numero di record presenti nei dati XML.
Un modulo può essere precompilato con dati provenienti da altre origini, ad esempio da un database aziendale o da applicazioni esterne.

Considerazioni sulla struttura del modulo

I moduli con layout scorrevole si basano sulle strutture del modulo create in Designer. Una struttura del modulo specifica un insieme di regole di layout, presentazione e acquisizione dei dati, compreso il calcolo dei valori in base all'input dell'utente. Le regole vengono applicate quando i dati vengono immessi in un modulo. I campi aggiunti a un modulo sono sottomoduli che si trovano all'interno della struttura del modulo. Ad esempio, nel modulo dell'ordine di acquisto visualizzato nel diagramma precedente, ogni riga è un sottomodulo. Per informazioni sulla creazione di una struttura del modulo contenente sottomoduli, vedere Creazione di un modulo di ordine di acquisto con layout scorrevole.

Informazioni sui sottogruppi di dati

Un'origine dati XML viene utilizzata per precompilare i moduli con layout fissi e layout scorrevoli. Tuttavia, la differenza sta nel fatto che un'origine dati XML che precompila un modulo con layout scorrevole contiene elementi XML ripetibili utilizzati per precompilare i sottomoduli che vengono ripetuti all'interno del modulo. Questi elementi XML ripetuti sono denominati sottogruppi di dati.
Un'origine dati XML utilizzata per precompilare il modulo di ordine di acquisto visualizzato nel diagramma precedente contiene quattro sottogruppi di dati ripetuti. Ciascun sottogruppo di dati corrisponde a un elemento acquistato. Gli articoli acquistati sono un monitor, una lampada da tavolo, un telefono e una rubrica.
La seguente origine dati XML viene utilizzata per precompilare il modulo di ordine di acquisto.
     <header>
         <!-- XML elements used to prepopulate non-repeating fields such as address
         <!and city
         <txtPONum>8745236985</txtPONum>
         <dtmDate>2004-02-08</dtmDate>
         <txtOrderedByCompanyName>Any Company Name</txtOrderedByCompanyName>
         <txtOrderedByAddress>555, Any Blvd.</txtOrderedByAddress>
         <txtOrderedByCity>Any City</txtOrderedByCity>
         <txtOrderedByStateProv>ST</txtOrderedByStateProv>
         <txtOrderedByZipCode>12345</txtOrderedByZipCode>
         <txtOrderedByCountry>Any Country</txtOrderedByCountry>
         <txtOrderedByPhone>(123) 456-7890</txtOrderedByPhone>
         <txtOrderedByFax>(123) 456-7899</txtOrderedByFax>
         <txtOrderedByContactName>Contact Name</txtOrderedByContactName>
         <txtDeliverToCompanyName>Any Company Name</txtDeliverToCompanyName>
         <txtDeliverToAddress>7895, Any Street</txtDeliverToAddress>
         <txtDeliverToCity>Any City</txtDeliverToCity>
         <txtDeliverToStateProv>ST</txtDeliverToStateProv>
         <txtDeliverToZipCode>12346</txtDeliverToZipCode>
         <txtDeliverToCountry>Any Country</txtDeliverToCountry>
         <txtDeliverToPhone>(123) 456-7891</txtDeliverToPhone>
         <txtDeliverToFax>(123) 456-7899</txtDeliverToFax>
         <txtDeliverToContactName>Contact Name</txtDeliverToContactName>
     </header>
     <detail>
         <!-- A data subgroup that contains information about the monitor>
         <txtPartNum>00010-100</txtPartNum>
         <txtDescription>Monitor</txtDescription>
         <numQty>1</numQty>
         <numUnitPrice>350.00</numUnitPrice>
     </detail>
     <detail>
         <!-- A data subgroup that contains information about the desk lamp>
         <txtPartNum>00010-200</txtPartNum>
         <txtDescription>Desk lamps</txtDescription>
         <numQty>3</numQty>
         <numUnitPrice>55.00</numUnitPrice>
     </detail>
     <detail>
         <!-- A data subgroup that contains information about the Phone>
             <txtPartNum>00025-275</txtPartNum>
             <txtDescription>Phone</txtDescription>
             <numQty>5</numQty>
             <numUnitPrice>85.00</numUnitPrice>
     </detail>
     <detail>
         <!-- A data subgroup that contains information about the address book>
         <txtPartNum>00300-896</txtPartNum>
         <txtDescription>Address book</txtDescription>
         <numQty>2</numQty>
         <numUnitPrice>15.00</numUnitPrice>
     </detail>

Tenere presente che ciascun sottogruppo di dati contiene quattro elementi XML che corrispondono alle seguenti informazioni:
  • Numero parte articoli
  • Descrizione elementi
  • Quantità di articoli
  • Prezzo unitario
Il nome dell'elemento XML padre di un sottogruppo di dati deve corrispondere al nome del sottomodulo che si trova nella struttura del modulo. Ad esempio, nel diagramma precedente, si noti che il nome dell'elemento XML principale del sottogruppo di dati è detail . Questo corrisponde al nome del sottomodulo che si trova nella struttura del modulo su cui si basa il modulo di ordine di acquisto. Se il nome dell'elemento XML padre del sottogruppo di dati e il sottomodulo non corrispondono, il modulo lato server non viene precompilato.
Ciascun sottogruppo di dati deve contenere elementi XML che corrispondono ai nomi dei campi nel sottomodulo. Il detail sottomodulo che si trova nella struttura del modulo contiene i campi seguenti:
  • txtPartNum
  • txtDescription
  • numQty
  • numUnitPrice
Se si tenta di precompilare un modulo con un'origine dati che contiene elementi XML ripetuti e si imposta l' RenderAtClient opzione su No , nel modulo viene unito solo il primo record di dati. Per fare in modo che tutti i record di dati siano uniti nel modulo, impostare RenderAtClient su Yes . Per informazioni sull' RenderAtClient opzione, vedere Rendering dei moduli in Client .
Per ulteriori informazioni sul servizio Forms, consultate Riferimento servizi per AEM Forms .

Riepilogo dei passaggi

Per precompilare un modulo con un layout scorrevole, eseguire le operazioni seguenti:
  1. Includere i file di progetto.
  2. Creare un'origine dati XML in memoria.
  3. Convertire l'origine dati XML.
  4. Eseguire il rendering di un modulo precompilato.
Includi file di progetto
Includete i file necessari nel progetto di sviluppo. Se create un'applicazione client utilizzando Java, includete i file JAR necessari. Se utilizzate i servizi Web, accertatevi di includere i file proxy.
Includi file di progetto
Includete i file necessari nel progetto di sviluppo. Se create un'applicazione client utilizzando Java, includete i file JAR necessari. Se utilizzate i servizi Web, accertatevi di includere i file proxy.
Creazione di un'origine dati XML in memoria
È possibile utilizzare org.w3c.dom le classi per creare un'origine dati XML in memoria per precompilare un modulo con un layout scorrevole. È necessario inserire i dati in un'origine dati XML conforme al modulo. Per informazioni sulla relazione tra un modulo con layout scorrevole e l'origine dati XML, vedere Informazioni sui sottogruppi di dati.
Conversione dell'origine dati XML
Un'origine dati XML in memoria creata utilizzando org.w3c.dom le classi può essere convertita in un com.adobe.idp.Document oggetto prima di poter essere utilizzata per precompilare il modulo. Un'origine dati XML in memoria può essere convertita utilizzando le classi di trasformazione Java XML.
Se si utilizza il WSDL del servizio Forms per precompilare un modulo, è necessario convertire un org.w3c.dom.Document oggetto in un BLOB oggetto.
Eseguire il rendering di un modulo precompilato
Il rendering di un modulo precompilato è simile a quello di un altro. L'unica differenza consiste nell'utilizzare l' com.adobe.idp.Document oggetto che contiene l'origine dati XML per precompilare il modulo.
Consulta anche

Precompilazione dei moduli tramite l'API Java

Per precompilare un modulo con un layout scorrevole utilizzando l'API di Forms (Java), effettuare le seguenti operazioni:
  1. Includi file di progetto
    Includete file JAR client, ad esempio adobe-forms-client.jar, nel percorso di classe del progetto Java. Per informazioni sulla posizione di questi file, consultate Inclusione di file libreria Java AEM Forms.
  2. Creazione di un'origine dati XML in memoria
    • Creare un oggetto Java DocumentBuilderFactory chiamando il metodo della DocumentBuilderFactory classe newInstance .
    • Creare un oggetto Java DocumentBuilder chiamando il DocumentBuilderFactory metodo dell' newDocumentBuilder oggetto.
    • Chiamare il metodo dell' DocumentBuilder oggetto newDocument per creare un'istanza di un org.w3c.dom.Document oggetto.
    • Creare l'elemento principale dell'origine dati XML richiamando il metodo dell' org.w3c.dom.Document oggetto createElement . Viene creato un Element oggetto che rappresenta l'elemento principale. Passate al createElement metodo un valore di stringa che rappresenta il nome dell'elemento. Inserite il valore restituito in Element . Quindi, aggiungere l'elemento principale al documento chiamando il metodo dell' Document oggetto appendChild e passare l'oggetto dell'elemento principale come argomento. Le seguenti righe di codice mostrano la logica di questa applicazione:
       Element root = (Element)document.createElement("transaction");  document.appendChild(root);
    • Creare l'elemento header dell'origine dati XML chiamando il metodo dell' Document oggetto createElement . Passate al createElement metodo un valore di stringa che rappresenta il nome dell'elemento. Inserite il valore restituito in Element . Quindi, aggiungete l'elemento header all'elemento root chiamando il metodo dell' root oggetto appendChild e passate l'oggetto dell'elemento header come argomento. Gli elementi XML che vengono aggiunti all'elemento header corrispondono alla parte statica del modulo. Le seguenti righe di codice mostrano questa logica di applicazione:
       Element header = (Element)document.createElement("header");  root.appendChild(header);
    • Create un elemento secondario che appartiene all'elemento header chiamando il metodo dell' Document oggetto createElement e passate una stringa che rappresenta il nome dell'elemento. Inserite il valore restituito in Element . Quindi, impostare un valore per l'elemento secondario chiamandone il appendChild metodo e passare il metodo dell' Document oggetto createTextNode come argomento. Specificate un valore di stringa da visualizzare come valore dell'elemento secondario. Infine, aggiungete l’elemento secondario all’elemento header chiamando il appendChild metodo dell’elemento header e passate l’oggetto element secondario come argomento. Le seguenti righe di codice mostrano questa logica di applicazione:
       Element poNum= (Element)document.createElement("txtPONum");  poNum.appendChild(document.createTextNode("8745236985"));  header.appendChild(LastName);
    • Aggiungere tutti gli elementi rimanenti all'elemento header ripetendo l'ultimo passaggio secondario per ciascun campo visualizzato nella parte statica del modulo (nel diagramma dell'origine dati XML, questi campi sono mostrati nella sezione A. (Vedere Informazioni sui sottogruppi di dati).
    • Creare l'elemento dettaglio dell'origine dati XML chiamando il metodo dell' Document oggetto createElement . Passate al createElement metodo un valore di stringa che rappresenta il nome dell'elemento. Inserite il valore restituito in Element . Quindi, aggiungete l'elemento dettaglio all'elemento principale chiamando il metodo dell' root oggetto appendChild e passate l'oggetto dell'elemento dettaglio come argomento. Gli elementi XML che vengono aggiunti all'elemento dettaglio corrispondono alla parte dinamica del modulo. Le seguenti righe di codice mostrano questa logica di applicazione:
       Element detail = (Element)document.createElement("detail");  root.appendChild(detail);
    • Create un elemento secondario che appartiene all'elemento dettaglio chiamando il metodo dell' Document oggetto createElement e passando un valore di stringa che rappresenta il nome dell'elemento. Inserite il valore restituito in Element . Quindi, impostare un valore per l'elemento secondario chiamandone il appendChild metodo e passare il metodo dell' Document oggetto createTextNode come argomento. Specificate un valore di stringa da visualizzare come valore dell'elemento secondario. Infine, aggiungete l'elemento secondario all'elemento dettaglio chiamando il appendChild metodo dell'elemento dettaglio e passate l'oggetto elemento secondario come argomento. Le seguenti righe di codice mostrano questa logica di applicazione:
       Element txtPartNum = (Element)document.createElement("txtPartNum");  txtPartNum.appendChild(document.createTextNode("00010-100"));  detail.appendChild(txtPartNum);
    • Ripetere l'ultimo passaggio secondario affinché tutti gli elementi XML vengano aggiunti all'elemento dettaglio. Per creare correttamente l'origine dati XML utilizzata per compilare il modulo di ordine di acquisto, è necessario aggiungere i seguenti elementi XML all'elemento dettaglio: txtDescription , numQty , e numUnitPrice .
    • Ripetere gli ultimi due passaggi secondari per tutti gli elementi dati utilizzati per precompilare il modulo.
  3. Conversione dell'origine dati XML
    • Creare un javax.xml.transform.Transformer oggetto richiamando il javax.xml.transform.Transformer metodo statico dell'oggetto newInstance .
    • Creare un Transformer oggetto richiamando il TransformerFactory metodo dell' newTransformer oggetto.
    • Creare un ByteArrayOutputStream oggetto utilizzando il relativo costruttore.
    • Creare un javax.xml.transform.dom.DOMSource oggetto utilizzando il relativo costruttore e passando l' org.w3c.dom.Document oggetto creato nel passaggio 1.
    • Creare un javax.xml.transform.dom.DOMSource oggetto utilizzando il relativo costruttore e passando l' ByteArrayOutputStream oggetto.
    • Compilare l'oggetto Java ByteArrayOutputStream richiamando il javax.xml.transform.Transformer metodo dell' transform oggetto e passando gli javax.xml.transform.dom.DOMSource oggetti e javax.xml.transform.stream.StreamResult gli oggetti.
    • Creare un array di byte e allocare la dimensione dell' ByteArrayOutputStream oggetto all'array di byte.
    • Compilare l'array di byte richiamando il metodo dell' ByteArrayOutputStream oggetto toByteArray .
    • Creare un com.adobe.idp.Document oggetto utilizzando il relativo costruttore e passando l'array di byte.
  4. Eseguire il rendering di un modulo precompilato
    Richiama il metodo dell’ FormsServiceClient oggetto renderPDFForm e passa i seguenti valori:
    • Una stringa che specifica il nome della struttura del modulo, inclusa l'estensione del nome file.
    • Un com.adobe.idp.Document oggetto che contiene i dati da unire al modulo. Assicurarsi di utilizzare l' com.adobe.idp.Document oggetto creato nei passaggi 1 e 2.
    • Un PDFFormRenderSpec oggetto che memorizza le opzioni di esecuzione.
    • Un URLSpec oggetto che contiene valori URI richiesti dal servizio Forms.
    • Un java.util.HashMap oggetto che memorizza gli allegati. Si tratta di un parametro facoltativo e potete specificare null se non desiderate allegare file al modulo.
    Il renderPDFForm metodo restituisce un FormsResult oggetto che contiene un flusso di dati del modulo che deve essere scritto nel browser Web del client.
    • Creare un javax.servlet.ServletOutputStream oggetto utilizzato per inviare un flusso di dati del modulo al browser Web del client.
    • Creare un com.adobe.idp.Document oggetto richiamando il FormsResult metodo ‘s getOutputContent .
    • Creare un java.io.InputStream oggetto richiamando il com.adobe.idp.Document metodo dell' getInputStream oggetto.
    • Per creare un array di byte, è necessario inserirlo nel flusso di dati del modulo richiamando il metodo dell' InputStream read oggetto e passando l'array di byte come argomento.
    • Richiamare il metodo dell' javax.servlet.ServletOutputStream oggetto write per inviare il flusso di dati del modulo al browser Web del client. Passa l'array di byte al write metodo.
Consulta anche

Precompilazione dei moduli tramite l'API del servizio Web

Per precompilare un modulo con un layout scorrevole utilizzando l'API di Forms (servizio Web), effettuare le seguenti operazioni:
  1. Includi file di progetto
  2. Creazione di un'origine dati XML in memoria
    • Creare un oggetto Java DocumentBuilderFactory chiamando il metodo della DocumentBuilderFactory classe newInstance .
    • Creare un oggetto Java DocumentBuilder chiamando il DocumentBuilderFactory metodo dell' newDocumentBuilder oggetto.
    • Chiamare il metodo dell' DocumentBuilder oggetto newDocument per creare un'istanza di un org.w3c.dom.Document oggetto.
    • Creare l'elemento principale dell'origine dati XML richiamando il metodo dell' org.w3c.dom.Document oggetto createElement . Viene creato un Element oggetto che rappresenta l'elemento principale. Passate al createElement metodo un valore di stringa che rappresenta il nome dell'elemento. Inserite il valore restituito in Element . Quindi, aggiungere l'elemento principale al documento chiamando il metodo dell' Document oggetto appendChild e passare l'oggetto dell'elemento principale come argomento. Le seguenti righe di codice mostrano questa logica di applicazione:
       Element root = (Element)document.createElement("transaction");  document.appendChild(root);
    • Creare l'elemento header dell'origine dati XML chiamando il metodo dell' Document oggetto createElement . Passate al createElement metodo un valore di stringa che rappresenta il nome dell'elemento. Inserite il valore restituito in Element . Quindi, aggiungete l'elemento header all'elemento root chiamando il metodo dell' root oggetto appendChild e passate l'oggetto dell'elemento header come argomento. Gli elementi XML che vengono aggiunti all'elemento header corrispondono alla parte statica del modulo. Le seguenti righe di codice mostrano questa logica di applicazione:
       Element header = (Element)document.createElement("header");  root.appendChild(header);
    • Create un elemento secondario che appartiene all'elemento header chiamando il metodo dell' Document oggetto createElement e passate una stringa che rappresenta il nome dell'elemento. Inserite il valore restituito in Element . Quindi, impostare un valore per l'elemento secondario chiamandone il appendChild metodo e passare il metodo dell' Document oggetto createTextNode come argomento. Specificate un valore di stringa da visualizzare come valore dell'elemento secondario. Infine, aggiungete l’elemento secondario all’elemento header chiamando il appendChild metodo dell’elemento header e passate l’oggetto element secondario come argomento. Le seguenti righe di codice mostrano la logica di questa applicazione:
       Element poNum= (Element)document.createElement("txtPONum");  poNum.appendChild(document.createTextNode("8745236985"));  header.appendChild(LastName);
    • Aggiungere tutti gli elementi rimanenti all'elemento header ripetendo l'ultimo passaggio secondario per ciascun campo visualizzato nella parte statica del modulo (nel diagramma dell'origine dati XML, questi campi sono mostrati nella sezione A. (Vedere Informazioni sui sottogruppi di dati).
    • Creare l'elemento dettaglio dell'origine dati XML chiamando il metodo dell' Document oggetto createElement . Passate al createElement metodo un valore di stringa che rappresenta il nome dell'elemento. Inserite il valore restituito in Element . Quindi, aggiungete l'elemento dettaglio all'elemento principale chiamando il metodo dell' root oggetto appendChild e passate l'oggetto dell'elemento dettaglio come argomento. Gli elementi XML che vengono aggiunti all'elemento dettaglio corrispondono alla parte dinamica del modulo. Le seguenti righe di codice mostrano la logica di questa applicazione:
       Element detail = (Element)document.createElement("detail");  root.appendChild(detail);
    • Create un elemento secondario che appartiene all'elemento dettaglio chiamando il metodo dell' Document oggetto createElement e passando un valore di stringa che rappresenta il nome dell'elemento. Inserite il valore restituito in Element . Quindi, impostare un valore per l'elemento secondario chiamandone il appendChild metodo e passare il metodo dell' Document oggetto createTextNode come argomento. Specificate un valore di stringa da visualizzare come valore dell'elemento secondario. Infine, aggiungete l'elemento secondario all'elemento dettaglio chiamando il appendChild metodo dell'elemento dettaglio e passate l'oggetto elemento secondario come argomento. Le seguenti righe di codice mostrano la logica di questa applicazione:
       Element txtPartNum = (Element)document.createElement("txtPartNum");  txtPartNum.appendChild(document.createTextNode("00010-100"));  detail.appendChild(txtPartNum);
    • Ripetere l'ultimo passaggio secondario affinché tutti gli elementi XML vengano aggiunti all'elemento dettaglio. Per creare correttamente l'origine dati XML utilizzata per compilare il modulo di ordine di acquisto, è necessario aggiungere i seguenti elementi XML all'elemento dettaglio: txtDescription , numQty , e numUnitPrice .
    • Ripetere gli ultimi due passaggi secondari per tutti gli elementi dati utilizzati per precompilare il modulo.
  3. Conversione dell'origine dati XML
    • Creare un javax.xml.transform.Transformer oggetto richiamando il javax.xml.transform.Transformer metodo statico dell'oggetto newInstance .
    • Creare un Transformer oggetto richiamando il TransformerFactory metodo dell' newTransformer oggetto.
    • Creare un ByteArrayOutputStream oggetto utilizzando il relativo costruttore.
    • Creare un javax.xml.transform.dom.DOMSource oggetto utilizzando il relativo costruttore e passando l' org.w3c.dom.Document oggetto creato nel passaggio 1.
    • Creare un javax.xml.transform.dom.DOMSource oggetto utilizzando il relativo costruttore e passando l' ByteArrayOutputStream oggetto.
    • Compilare l'oggetto Java ByteArrayOutputStream richiamando il javax.xml.transform.Transformer metodo dell' transform oggetto e passando gli javax.xml.transform.dom.DOMSource oggetti e javax.xml.transform.stream.StreamResult gli oggetti.
    • Creare un array di byte e allocare la dimensione dell' ByteArrayOutputStream oggetto all'array di byte.
    • Compilare l'array di byte richiamando il metodo dell' ByteArrayOutputStream oggetto toByteArray .
    • Creare un BLOB oggetto utilizzando il relativo costruttore, richiamarne il setBinaryData metodo e passare l'array di byte.
  4. Eseguire il rendering di un modulo precompilato
    Richiama il metodo dell’ FormsService oggetto renderPDFForm e passa i seguenti valori:
    • Una stringa che specifica il nome della struttura del modulo, inclusa l'estensione del nome file.
    • Un BLOB oggetto che contiene i dati da unire al modulo. Assicurarsi di utilizzare l' BLOB oggetto creato nei passaggi 1 e 2.
    • Un PDFFormRenderSpecc oggetto che memorizza le opzioni di esecuzione. Per ulteriori informazioni, consulta Riferimento API per AEM Forms.
    • Un URLSpec oggetto che contiene valori URI richiesti dal servizio Forms.
    • Un java.util.HashMap oggetto che memorizza gli allegati. Si tratta di un parametro facoltativo e potete specificare null se non desiderate allegare file al modulo.
    • Un oggetto vuoto com.adobe.idp.services.holders.BLOBHolder compilato dal metodo. Viene utilizzato per memorizzare il modulo PDF di cui è stato effettuato il rendering.
    • Un oggetto vuoto javax.xml.rpc.holders.LongHolder compilato dal metodo. (Questo argomento memorizza il numero di pagine nel modulo).
    • Un oggetto vuoto javax.xml.rpc.holders.StringHolder compilato dal metodo. (Questo argomento memorizza il valore delle impostazioni internazionali).
    • Un oggetto vuoto com.adobe.idp.services.holders.FormsResultHolder che conterrà i risultati dell'operazione.
    Il renderPDFForm metodo compila l' com.adobe.idp.services.holders.FormsResultHolder oggetto passato come valore dell'ultimo argomento con un flusso di dati del modulo che deve essere scritto nel browser Web del client.
    • Creare un FormResult oggetto ottenendo il valore del membro com.adobe.idp.services.holders.FormsResultHolder dati dell' value oggetto.
    • Creare un BLOB oggetto che contenga dati del modulo richiamando il FormsResult metodo dell' getOutputContent oggetto.
    • Ottenere il tipo di contenuto dell' BLOB oggetto richiamandone il getContentType metodo.
    • Impostare il tipo di contenuto dell' javax.servlet.http.HttpServletResponse oggetto richiamandone setContentType il metodo e passando il tipo di contenuto dell' BLOB oggetto.
    • Creare un javax.servlet.ServletOutputStream oggetto utilizzato per scrivere il flusso di dati del modulo nel browser Web del client richiamando il javax.servlet.http.HttpServletResponse metodo dell' getOutputStream oggetto.
    • Creare un array di byte e compilarlo richiamando il metodo dell' BLOB oggetto getBinaryData . Questa attività assegna il contenuto dell' FormsResult oggetto all'array di byte.
    • Richiamare il metodo dell' javax.servlet.http.HttpServletResponse oggetto write per inviare il flusso di dati del modulo al browser Web del client. Passa l'array di byte al write metodo.
    Il renderPDFForm metodo compila l' com.adobe.idp.services.holders.FormsResultHolder oggetto passato come valore dell'ultimo argomento con un flusso di dati del modulo che deve essere scritto nel browser Web del client.
Consulta anche