Gli esempi e gli esempi contenuti in questo documento sono solo per l’ambiente AEM Forms su JEE.
In genere, la progettazione di un modulo creata in Designer viene passata tramite riferimento al servizio Forms. Le progettazioni dei moduli possono essere di grandi dimensioni e, di conseguenza, è più efficiente trasmetterle per riferimento per evitare di dover eseguire il marshalling dei byte di progettazione dei moduli in base al valore. Il servizio Forms può anche memorizzare in cache la struttura del modulo in modo che, quando viene memorizzata nella cache, non debba leggerla continuamente.
Se una progettazione di modulo contiene un attributo UUID, viene memorizzata nella cache. Il valore UUID è univoco per tutte le progettazioni di moduli e viene utilizzato per identificare in modo univoco un modulo. Quando si esegue il rendering di un modulo in base al valore, il modulo deve essere memorizzato nella cache solo se viene utilizzato ripetutamente. Tuttavia, se il modulo non viene utilizzato ripetutamente e deve essere univoco, puoi evitare di memorizzarlo in cache utilizzando le opzioni di memorizzazione in cache impostate utilizzando l’API di AEM Forms.
Il servizio Forms può anche risolvere la posizione del contenuto collegato all’interno della progettazione del modulo. Ad esempio, le immagini collegate a cui si fa riferimento nella progettazione del modulo sono URL relativi. Si presume che il contenuto collegato sia sempre relativo alla posizione di progettazione del modulo. Pertanto, la risoluzione del contenuto collegato consiste nel determinarne la posizione applicando il percorso relativo alla posizione di progettazione assoluta del modulo.
Invece di passare una progettazione di modulo per riferimento, è possibile passare una progettazione di modulo per valore. Il passaggio di una progettazione di modulo in base al valore è efficiente quando la progettazione di un modulo viene creata in modo dinamico, ovvero quando un'applicazione client genera il codice XML che crea una progettazione di modulo durante la fase di esecuzione. In questa situazione, la struttura di un modulo non viene memorizzata in un repository fisico perché è memorizzata. Durante la creazione dinamica di una progettazione di moduli in fase di esecuzione e il suo passaggio in base al valore, è possibile memorizzare il modulo nella cache e migliorare le prestazioni del servizio Forms.
Limitazioni del passaggio di un modulo per valore
Quando la progettazione di un modulo viene passata in base al valore, si applicano le seguenti limitazioni:
Sebbene sia possibile eseguire il rendering di diversi tipi di moduli in base al valore, ad esempio moduli HTML o moduli che contengono diritti di utilizzo, in questa sezione viene descritto come eseguire il rendering di PDF forms interattivi.
Per ulteriori informazioni sul servizio Forms, consulta Guida di riferimento dei servizi per AEM Forms.
Per eseguire il rendering di un modulo in base al valore, effettuare le seguenti operazioni:
Includi file di progetto
Includi i file necessari nel progetto di sviluppo. Se stai creando un’applicazione client utilizzando Java, includi i file JAR necessari. Se utilizzi i servizi web, accertati di includere i file proxy.
Creare un oggetto API client di Forms
Prima di poter importare i dati in modo programmatico in un modulo PDF API client, è necessario creare un client del servizio di integrazione dati. Quando si crea un client di servizio, vengono definite le impostazioni di connessione necessarie per richiamare un servizio.
Fare riferimento alla progettazione del modulo
Quando si esegue il rendering di un modulo in base al valore, è necessario creare un com.adobe.idp.Document
oggetto che contiene la struttura del modulo da riprodurre. È possibile fare riferimento a un file XDP esistente oppure creare in modo dinamico una struttura di modulo in fase di esecuzione e compilare un com.adobe.idp.Document
con quei dati.
Questa sezione e il relativo metodo di avvio rapido fanno riferimento a un file XDP esistente.
Eseguire il rendering di un modulo in base al valore
Per eseguire il rendering di un modulo in base al valore, trasmettere un com.adobe.idp.Document
istanza che contiene la struttura del modulo per il metodo di rendering inDataDoc
(può essere uno qualsiasi dei FormsServiceClient
i metodi di rendering dell'oggetto, come renderPDFForm
, (Deprecated) renderHTMLForm
e così via). Questo valore di parametro è in genere riservato ai dati che vengono uniti al modulo. Allo stesso modo, passa un valore stringa vuoto al formQuery
parametro. Normalmente questo parametro richiede un valore stringa che specifica il nome della struttura del modulo.
Per visualizzare i dati all'interno del modulo, è necessario specificare i dati all'interno del xfa:datasets
elemento. Per informazioni sull’architettura XFA, consulta https://www.pdfa.org/norm-refs/XFA-3_3.pdf.
Scrivere il flusso di dati del modulo nel browser Web client
Quando il servizio Forms esegue il rendering di un modulo in base al valore, restituisce un flusso di dati del modulo che è necessario scrivere nel browser Web client. Quando viene scritto nel browser Web client, il modulo è visibile all'utente.
Consulta anche
Eseguire il rendering di un modulo per valore utilizzando l’API Java
Eseguire il rendering di un modulo per valore utilizzando l’API del servizio web
Inclusione dei file della libreria Java di AEM Forms
Impostazione delle proprietà di connessione
Guida introduttiva all’API di servizio Forms
Trasmissione di documenti al servizio Forms
Creazione di applicazioni Web per il rendering di Forms
Eseguire il rendering di un modulo per valore utilizzando l’API Forms (Java):
Includi file di progetto
Includi i file JAR client, ad esempio adobe-forms-client.jar, nel percorso di classe del progetto Java.
Creare un oggetto API client di Forms
ServiceClientFactory
oggetto che contiene proprietà di connessione.FormsServiceClient
mediante il costruttore e passando il ServiceClientFactory
oggetto.Fare riferimento alla progettazione del modulo
java.io.FileInputStream
oggetto che rappresenta la struttura del modulo da riprodurre utilizzando il relativo costruttore e passando un valore stringa che specifica la posizione del file XDP.com.adobe.idp.Document
mediante il costruttore e passando il java.io.FileInputStream
oggetto.Eseguire il rendering di un modulo in base al valore
Richiama FormsServiceClient
dell'oggetto renderPDFForm
e trasmettere i seguenti valori:
com.adobe.idp.Document
oggetto che contiene la struttura del modulo. Normalmente questo valore di parametro è riservato ai dati che vengono uniti con il modulo.PDFFormRenderSpec
oggetto che memorizza le opzioni di runtime. Questo è un parametro facoltativo e puoi specificare null
se non si desidera specificare le opzioni di runtime.URLSpec
oggetto contenente valori URI richiesti dal servizio Forms.java.util.HashMap
oggetto che memorizza gli allegati. Questo è un parametro facoltativo e puoi specificare null
se non si desidera allegare file al modulo.Il renderPDFForm
il metodo restituisce un FormsResult
oggetto contenente un flusso di dati modulo che può essere scritto nel browser web client.
Scrivere il flusso di dati del modulo nel browser Web client
com.adobe.idp.Document
oggetto richiamando il FormsResult
dell'oggetto getOutputContent
metodo.com.adobe.idp.Document
oggetto richiamando il relativo getContentType
metodo.javax.servlet.http.HttpServletResponse
tipo di contenuto dell'oggetto richiamando il relativo setContentType
e passando il tipo di contenuto del com.adobe.idp.Document
oggetto.javax.servlet.ServletOutputStream
oggetto utilizzato per scrivere il flusso di dati del modulo nel browser web client richiamando javax.servlet.http.HttpServletResponse
dell'oggetto getOutputStream
metodo.java.io.InputStream
oggetto richiamando il com.adobe.idp.Document
dell'oggetto getInputStream
metodo.InputStream
oggetto. Richiama InputStream
dell'oggetto available
metodo per ottenere le dimensioni del InputStream
oggetto.InputStream
dell'oggetto read
e passando la matrice di byte come argomento.javax.servlet.ServletOutputStream
dell'oggetto write
metodo per inviare il flusso di dati del modulo al browser web client. Passare la matrice di byte al write
metodo.Consulta anche
Quick Start (modalità SOAP): rendering per valore utilizzando l’API Java
Inclusione dei file della libreria Java di AEM Forms
Impostazione delle proprietà di connessione
Eseguire il rendering di un modulo in base al valore utilizzando l’API di Forms (servizio web):
Includi file di progetto
Creare un oggetto API client di Forms
Creare un FormsService
e impostare i valori di autenticazione.
Fare riferimento alla progettazione del modulo
java.io.FileInputStream
mediante il costruttore. Passa un valore stringa che specifica la posizione del file XDP.BLOB
mediante il costruttore. Il BLOB
L'oggetto viene utilizzato per memorizzare un documento PDF crittografato con una password.java.io.FileInputStream
oggetto. È possibile determinare le dimensioni della matrice di byte ottenendo java.io.FileInputStream
dimensione dell'oggetto utilizzando il relativo available
metodo.java.io.FileInputStream
dell'oggetto read
e passando la matrice di byte.BLOB
oggetto richiamando il relativo setBinaryData
e passando la matrice di byte.Eseguire il rendering di un modulo in base al valore
Richiama FormsService
dell'oggetto renderPDFForm
e trasmettere i seguenti valori:
BLOB
oggetto che contiene la struttura del modulo. Normalmente questo valore di parametro è riservato ai dati che vengono uniti con il modulo.PDFFormRenderSpec
oggetto che memorizza le opzioni di runtime. Questo è un parametro facoltativo e puoi specificare null
se non si desidera specificare le opzioni di runtime.URLSpec
oggetto contenente valori URI richiesti dal servizio Forms.java.util.HashMap
oggetto che memorizza gli allegati. Questo è un parametro facoltativo e puoi specificare null
se non si desidera allegare file al modulo.com.adobe.idp.services.holders.BLOBHolder
oggetto popolato dal metodo. Viene utilizzato per memorizzare il modulo PDF di cui è stato eseguito il rendering.javax.xml.rpc.holders.LongHolder
oggetto popolato dal metodo. Questo argomento consente di memorizzare il numero di pagine del modulo.javax.xml.rpc.holders.StringHolder
oggetto popolato dal metodo. Questo argomento consente di memorizzare il valore delle impostazioni locali.com.adobe.idp.services.holders.FormsResultHolder
oggetto che conterrà i risultati dell'operazione.Il renderPDFForm
il metodo compila com.adobe.idp.services.holders.FormsResultHolder
oggetto passato come ultimo valore di argomento con un flusso di dati del modulo che deve essere scritto nel browser web client.
Scrivere il flusso di dati del modulo nel browser Web client
FormResult
dell'oggetto ottenendo il valore del com.adobe.idp.services.holders.FormsResultHolder
dell'oggetto value
membro dati.BLOB
oggetto che contiene i dati del modulo richiamando FormsResult
dell'oggetto getOutputContent
metodo.BLOB
oggetto richiamando il relativo getContentType
metodo.javax.servlet.http.HttpServletResponse
tipo di contenuto dell'oggetto richiamando il relativo setContentType
e passando il tipo di contenuto del BLOB
oggetto.javax.servlet.ServletOutputStream
oggetto utilizzato per scrivere il flusso di dati del modulo nel browser web client richiamando javax.servlet.http.HttpServletResponse
dell'oggetto getOutputStream
metodo.BLOB
dell'oggetto getBinaryData
metodo. Questa attività assegna il contenuto del FormsResult
alla matrice di byte.javax.servlet.http.HttpServletResponse
dell'oggetto write
metodo per inviare il flusso di dati del modulo al browser web client. Passare la matrice di byte al write
metodo.Consulta anche