Esempi ed esempi in questo documento sono solo per AEM Forms in ambiente JEE.
In genere, una struttura del modulo creata in Designer viene trasmessa in riferimento al servizio Forms. Le strutture del modulo possono essere di grandi dimensioni e, di conseguenza, è più efficiente passarle con un riferimento per evitare di dover eseguire il marshalling dei byte della struttura del modulo in base al valore. Il servizio Forms può anche memorizzare nella cache la struttura del modulo in modo che, una volta memorizzata nella cache, non sia necessario leggere continuamente la struttura del modulo.
Se una struttura del modulo contiene un attributo UUID, viene memorizzata nella cache. Il valore UUID è univoco per tutte le strutture del modulo 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 utilizzato ripetutamente. Tuttavia, se il modulo non viene utilizzato ripetutamente e deve essere univoco, è possibile evitare di memorizzare il modulo nella cache utilizzando opzioni di memorizzazione nella cache impostate utilizzando l’API di AEM Forms.
Il servizio Forms può inoltre risolvere la posizione del contenuto collegato all’interno della struttura del modulo. Ad esempio, le immagini collegate a cui si fa riferimento all’interno della struttura del modulo sono URL relativi. Si presume sempre che il contenuto collegato sia relativo alla posizione della struttura del modulo. Pertanto, la risoluzione del contenuto collegato è una questione di determinare la sua posizione applicando il percorso relativo alla posizione assoluta della struttura del modulo.
Anziché passare una struttura del modulo per riferimento, è possibile passare una struttura del modulo per valore. Il passaggio di una struttura del modulo in base al valore è efficiente quando la struttura del modulo viene creata in modo dinamico; cioè, quando un'applicazione client genera l'XML che crea una struttura del modulo durante l'esecuzione. In questa situazione una struttura del modulo non viene memorizzata in un archivio fisico perché è memorizzata in memoria. Quando si crea in modo dinamico una struttura del modulo in fase di esecuzione e la si passa per valore, è possibile memorizzare il modulo nella cache e migliorare le prestazioni del servizio Forms.
Limitazioni del passaggio di un modulo per valore
Quando una struttura del modulo viene passata per valore, si applicano le seguenti limitazioni:
Sebbene sia possibile eseguire il rendering di diversi tipi di moduli per valore (ad esempio, moduli HTML o moduli che contengono diritti di utilizzo), in questa sezione viene illustrato il rendering di PDF forms interattivi.
Per ulteriori informazioni sul servizio Forms, consulta Riferimento servizi per AEM Forms.
Per eseguire il rendering di un modulo in base al valore, procedere come segue:
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, assicurati di includere i file proxy.
Creare un oggetto API client Forms
Prima di poter importare i dati in modo programmatico in un’API client del modulo PDF, è necessario creare un client del servizio di integrazione dei dati. Quando crei un client di servizio, definisci le impostazioni di connessione necessarie per richiamare un servizio.
Riferimento alla struttura del modulo
Quando si esegue il rendering di un modulo in base al valore, è necessario creare un oggetto com.adobe.idp.Document
che contenga la struttura del modulo da sottoporre a rendering. È possibile fare riferimento a un file XDP esistente oppure creare in modo dinamico una struttura del modulo in fase di esecuzione e compilare un com.adobe.idp.Document
con tali dati.
Questa sezione e il relativo avvio rapido fanno riferimento a un file XDP esistente.
Rendering di un modulo per valore
Per eseguire il rendering di un modulo in base al valore, passare un’istanza com.adobe.idp.Document
che contiene la struttura del modulo al parametro inDataDoc
del metodo di rendering (può essere uno dei metodi di rendering dell’oggetto FormsServiceClient
come renderPDFForm
, (Deprecated) renderHTMLForm
e così via). Questo valore di parametro è normalmente riservato ai dati uniti al modulo. Allo stesso modo, passa un valore di stringa vuoto al parametro formQuery
. Normalmente questo parametro richiede un valore stringa che specifica il nome della struttura del modulo.
Se si desidera visualizzare i dati all’interno del modulo, è necessario specificarli all’interno dell’elemento xfa:datasets
. Per informazioni sull'architettura XFA, visita https://partners.adobe.com/public/developer/xml/index_arch.html.
Scrivere il flusso di dati del modulo sul browser Web client
Quando il servizio Forms esegue il rendering di un modulo per valore, restituisce un flusso di dati del modulo che è necessario scrivere nel browser Web client. Una volta 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 libreria Java di AEM Forms
Impostazione delle proprietà di connessione
Avvio rapido API di Forms Service
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 file JAR client, come adobe-forms-client.jar, nel percorso di classe del progetto Java.
Creare un oggetto API client Forms
ServiceClientFactory
contenente le proprietà di connessione.FormsServiceClient
utilizzando il relativo costruttore e passando l'oggetto ServiceClientFactory
.Riferimento alla struttura del modulo
java.io.FileInputStream
che rappresenta la struttura del modulo di cui eseguire il rendering utilizzando il relativo costruttore e passando un valore di stringa che specifica la posizione del file XDP.com.adobe.idp.Document
utilizzando il relativo costruttore e passando l'oggetto java.io.FileInputStream
.Rendering di un modulo per valore
Richiama il metodo renderPDFForm
dell'oggetto FormsServiceClient
e passa i seguenti valori:
com.adobe.idp.Document
che contiene la struttura del modulo. Normalmente questo valore di parametro è riservato ai dati uniti al modulo.PDFFormRenderSpec
che memorizza le opzioni di esecuzione. Questo è un parametro facoltativo ed è possibile specificare null
se non si desidera specificare le opzioni di esecuzione.URLSpec
contenente valori URI richiesti dal servizio Forms.java.util.HashMap
che memorizza gli allegati di file. Questo è un parametro facoltativo ed è possibile specificare null
se non si desidera allegare file al modulo.Il metodo renderPDFForm
restituisce un oggetto FormsResult
contenente un flusso di dati del modulo che può essere scritto nel browser Web client.
Scrivere il flusso di dati del modulo sul browser Web client
com.adobe.idp.Document
richiamando il metodo FormsResult
object ‘s getOutputContent
.com.adobe.idp.Document
richiamandone il metodo getContentType
.javax.servlet.http.HttpServletResponse
richiamandone il metodo setContentType
e passando il tipo di contenuto dell'oggetto com.adobe.idp.Document
.javax.servlet.ServletOutputStream
utilizzato per scrivere il flusso di dati del modulo nel browser Web client richiamando il metodo javax.servlet.http.HttpServletResponse
dell'oggetto getOutputStream
.java.io.InputStream
richiamando il metodo com.adobe.idp.Document
dell'oggetto getInputStream
.InputStream
. Richiamare il metodo available
dell'oggetto InputStream
per ottenere le dimensioni dell'oggetto InputStream
.read
dell’oggetto InputStream
e passando l’array di byte come argomento.write
dell’oggetto javax.servlet.ServletOutputStream
per inviare il flusso di dati del modulo al browser Web client. Passa l'array di byte al metodo write
.Consulta anche
Avvio rapido (modalità SOAP): Rendering per valore utilizzando l’API Java
Inclusione dei file libreria Java di AEM Forms
Impostazione delle proprietà di connessione
Eseguire il rendering di un modulo per valore utilizzando l’API Forms (servizio Web):
Includi file di progetto
Creare un oggetto API client Forms
Creare un oggetto FormsService
e impostare i valori di autenticazione.
Riferimento alla struttura del modulo
java.io.FileInputStream
utilizzando il relativo costruttore. Passa un valore stringa che specifica la posizione del file XDP.BLOB
utilizzando il relativo costruttore. L'oggetto BLOB
viene utilizzato per memorizzare un documento PDF crittografato con una password.java.io.FileInputStream
. È possibile determinare le dimensioni dell'array di byte ottenendo le dimensioni dell'oggetto java.io.FileInputStream
utilizzando il relativo metodo available
.read
dell’oggetto java.io.FileInputStream
e passando l’array di byte.BLOB
richiamandone il metodo setBinaryData
e passando la matrice dei byte.Rendering di un modulo per valore
Richiama il metodo renderPDFForm
dell'oggetto FormsService
e passa i seguenti valori:
BLOB
che contiene la struttura del modulo. Normalmente questo valore di parametro è riservato ai dati uniti al modulo.PDFFormRenderSpec
che memorizza le opzioni di esecuzione. Questo è un parametro facoltativo ed è possibile specificare null
se non si desidera specificare le opzioni di esecuzione.URLSpec
contenente valori URI richiesti dal servizio Forms.java.util.HashMap
che memorizza gli allegati di file. Questo è un parametro facoltativo ed è possibile specificare null
se non si desidera allegare file al modulo.com.adobe.idp.services.holders.BLOBHolder
vuoto compilato dal metodo . Viene utilizzato per memorizzare il modulo PDF di cui è stato effettuato il rendering.javax.xml.rpc.holders.LongHolder
vuoto compilato dal metodo . Questo argomento memorizza il numero di pagine nel modulo.javax.xml.rpc.holders.StringHolder
vuoto compilato dal metodo . Questo argomento memorizza il valore delle impostazioni internazionali.com.adobe.idp.services.holders.FormsResultHolder
vuoto che conterrà i risultati dell'operazione.Il metodo renderPDFForm
popola l'oggetto com.adobe.idp.services.holders.FormsResultHolder
passato come ultimo valore dell'argomento con un flusso di dati del modulo che deve essere scritto nel browser Web client.
Scrivere il flusso di dati del modulo sul browser Web client
FormResult
ottenendo il valore del membro dati com.adobe.idp.services.holders.FormsResultHolder
dell'oggetto value
.BLOB
che contiene dati del modulo richiamando il metodo FormsResult
dell'oggetto getOutputContent
.BLOB
richiamandone il metodo getContentType
.javax.servlet.http.HttpServletResponse
richiamandone il metodo setContentType
e passando il tipo di contenuto dell'oggetto BLOB
.javax.servlet.ServletOutputStream
utilizzato per scrivere il flusso di dati del modulo nel browser Web client richiamando il metodo javax.servlet.http.HttpServletResponse
dell'oggetto getOutputStream
.getBinaryData
dell'oggetto BLOB
. Questa attività assegna il contenuto dell'oggetto FormsResult
all'array di byte.write
dell’oggetto javax.servlet.http.HttpServletResponse
per inviare il flusso di dati del modulo al browser Web client. Passa l'array di byte al metodo write
.Consulta anche