Rendering di Forms per valore rendering-forms-by-value
Gli esempi e gli esempi contenuti in questo documento sono solo per AEM Forms in ambiente JEE.
In genere, la progettazione di un modulo creata in Designer viene passata in base 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:
- Nessun contenuto collegato relativo può essere incluso nella progettazione del modulo. Tutte le immagini e i frammenti devono essere incorporati nella struttura del modulo o essere assolutamente referenziati.
- Non è possibile eseguire calcoli lato server dopo il rendering del modulo. Se il modulo viene inviato nuovamente al servizio Forms, i dati vengono estratti e restituiti senza calcoli lato server.
- Poiché HTML può utilizzare solo immagini collegate in fase di runtime, non è possibile generare HTML con immagini incorporate. Questo perché il servizio Forms supporta le immagini incorporate con HTML recuperando le immagini da una progettazione di modulo di riferimento. Poiché una struttura di modulo passata da un valore non dispone di una posizione di riferimento, le immagini incorporate non possono essere estratte durante la visualizzazione della pagina HTML. Pertanto, i riferimenti immagine devono essere percorsi assoluti per essere sottoposti a rendering in HTML.
Riepilogo dei passaggi summary-of-steps
Per eseguire il rendering di un modulo in base al valore, effettuare le seguenti operazioni:
- Includi file di progetto.
- Crea un oggetto API client di Forms.
- Fare riferimento alla progettazione del modulo.
- Eseguire il rendering di un modulo per valore.
- Scrivere il flusso di dati del modulo nel browser Web client.
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.
Fai riferimento alla progettazione del modulo
Quando si esegue il rendering di un modulo in base al valore, è necessario creare un oggetto com.adobe.idp.Document
contenente la struttura del modulo da riprodurre. È possibile fare riferimento a un file XDP esistente oppure creare dinamicamente una struttura di modulo in fase di esecuzione e popolare un com.adobe.idp.Document
con tali dati.
Eseguire il rendering di un modulo per valore
Per eseguire il rendering di un modulo in base al valore, passare un'istanza com.adobe.idp.Document
contenente la struttura del modulo al parametro inDataDoc
del metodo di rendering (può essere uno qualsiasi dei metodi di rendering dell'oggetto FormsServiceClient
, ad esempio renderPDFForm
, (Deprecated) renderHTMLForm
e così via). Questo valore di parametro è in genere riservato ai dati che vengono uniti al modulo. Allo stesso modo, passare un valore stringa vuoto al parametro formQuery
. Normalmente questo parametro richiede un valore stringa che specifica il nome della struttura del modulo.
xfa:datasets
. Per informazioni sull'architettura XFA, vai a 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
Eseguire il rendering di un modulo per valore utilizzando l’API Java render-a-form-by-value-using-the-java-api
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
- Creare un oggetto
ServiceClientFactory
contenente le proprietà di connessione. - Creare un oggetto
FormsServiceClient
utilizzando il relativo costruttore e passando l'oggettoServiceClientFactory
.
- Creare un oggetto
-
Fare riferimento alla progettazione del modulo
- Creare un oggetto
java.io.FileInputStream
che rappresenta la struttura del modulo da riprodurre utilizzando il relativo costruttore e passando un valore stringa che specifica la posizione del file XDP. - Creare un oggetto
com.adobe.idp.Document
utilizzando il relativo costruttore e passando l'oggettojava.io.FileInputStream
.
- Creare un oggetto
-
Eseguire il rendering di un modulo in base al valore
Richiama il metodo
renderPDFForm
dell'oggettoFormsServiceClient
e passa i seguenti valori:- Valore stringa vuoto. In genere questo parametro richiede un valore stringa che specifica il nome della struttura del modulo.
- Oggetto
com.adobe.idp.Document
contenente la struttura del modulo. Normalmente questo valore di parametro è riservato ai dati che vengono uniti con il modulo. - Un oggetto
PDFFormRenderSpec
che memorizza le opzioni di runtime. Questo è un parametro facoltativo ed è possibile specificarenull
se non si desidera specificare le opzioni di runtime. - Oggetto
URLSpec
contenente i valori URI richiesti dal servizio Forms. - Oggetto
java.util.HashMap
che memorizza gli allegati. Questo è un parametro facoltativo ed è possibile specificarenull
se non si desidera allegare file al modulo.
Il metodo
renderPDFForm
restituisce un oggettoFormsResult
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
- Creare un oggetto
com.adobe.idp.Document
richiamando il metodogetOutputContent
dell'oggettoFormsResult
. - Ottenere il tipo di contenuto dell'oggetto
com.adobe.idp.Document
richiamando il relativo metodogetContentType
. - Impostare il tipo di contenuto dell'oggetto
javax.servlet.http.HttpServletResponse
richiamando il relativo metodosetContentType
e passando il tipo di contenuto dell'oggettocom.adobe.idp.Document
. - Creare un oggetto
javax.servlet.ServletOutputStream
utilizzato per scrivere il flusso di dati del modulo nel browser Web client richiamando il metodogetOutputStream
dell'oggettojavax.servlet.http.HttpServletResponse
. - Creare un oggetto
java.io.InputStream
richiamando il metodogetInputStream
dell'oggettocom.adobe.idp.Document
. - Creare una matrice di byte e allocare le dimensioni dell'oggetto
InputStream
. Richiama il metodoavailable
dell'oggettoInputStream
per ottenere le dimensioni dell'oggettoInputStream
. - Compilare la matrice di byte con il flusso di dati del modulo richiamando il metodo
read
dell'oggettoInputStream
e passando la matrice di byte come argomento. - Richiama il metodo
write
dell'oggettojavax.servlet.ServletOutputStream
per inviare il flusso di dati del modulo al browser Web client. Passare la matrice di byte al metodowrite
.
- Creare un oggetto
Consulta anche
Quick Start (modalità SOAP): rendering per valore utilizzando l’API Java
Eseguire il rendering di un modulo per valore utilizzando l’API del servizio web render-a-form-by-value-using-the-web-service-api
Eseguire il rendering di un modulo in base al valore utilizzando l’API di Forms (servizio web):
-
Includi file di progetto
- Creare classi proxy Java che utilizzano il servizio Forms WSDL.
- Includi le classi proxy Java nel percorso della classe.
-
Creare un oggetto API client di Forms
Creare un oggetto
FormsService
e impostare i valori di autenticazione. -
Fare riferimento alla progettazione del modulo
- Creare un oggetto
java.io.FileInputStream
utilizzando il relativo costruttore. Passa un valore stringa che specifica la posizione del file XDP. - Creare un oggetto
BLOB
utilizzando il relativo costruttore. L'oggettoBLOB
viene utilizzato per memorizzare un documento PDF crittografato con una password. - Creare una matrice di byte che memorizza il contenuto dell'oggetto
java.io.FileInputStream
. È possibile determinare la dimensione della matrice di byte ottenendo la dimensione dell'oggettojava.io.FileInputStream
utilizzando il relativo metodoavailable
. - Compilare la matrice di byte con i dati di flusso richiamando il metodo
read
dell'oggettojava.io.FileInputStream
e passando la matrice di byte. - Compilare l'oggetto
BLOB
richiamando il relativo metodosetBinaryData
e passando la matrice di byte.
- Creare un oggetto
-
Eseguire il rendering di un modulo in base al valore
Richiama il metodo
renderPDFForm
dell'oggettoFormsService
e passa i seguenti valori:- Valore stringa vuoto. In genere questo parametro richiede un valore stringa che specifica il nome della struttura del modulo.
- Oggetto
BLOB
contenente la struttura del modulo. Normalmente questo valore di parametro è riservato ai dati che vengono uniti con il modulo. - Un oggetto
PDFFormRenderSpec
che memorizza le opzioni di runtime. Questo è un parametro facoltativo ed è possibile specificarenull
se non si desidera specificare le opzioni di runtime. - Oggetto
URLSpec
contenente i valori URI richiesti dal servizio Forms. - Oggetto
java.util.HashMap
che memorizza gli allegati. Questo è un parametro facoltativo ed è possibile specificarenull
se non si desidera allegare file al modulo. - Oggetto
com.adobe.idp.services.holders.BLOBHolder
vuoto popolato dal metodo. Viene utilizzato per memorizzare il modulo PDF di cui è stato eseguito il rendering. - Oggetto
javax.xml.rpc.holders.LongHolder
vuoto popolato dal metodo. Questo argomento consente di memorizzare il numero di pagine del modulo. - Oggetto
javax.xml.rpc.holders.StringHolder
vuoto popolato dal metodo. Questo argomento consente di memorizzare il valore delle impostazioni locali. - Oggetto
com.adobe.idp.services.holders.FormsResultHolder
vuoto che conterrà i risultati dell'operazione.
Il metodo
renderPDFForm
popola l'oggettocom.adobe.idp.services.holders.FormsResultHolder
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
- Creare un oggetto
FormResult
ottenendo il valore del membro dativalue
dell'oggettocom.adobe.idp.services.holders.FormsResultHolder
. - Creare un oggetto
BLOB
contenente dati del modulo richiamando il metodogetOutputContent
dell'oggettoFormsResult
. - Ottenere il tipo di contenuto dell'oggetto
BLOB
richiamando il relativo metodogetContentType
. - Impostare il tipo di contenuto dell'oggetto
javax.servlet.http.HttpServletResponse
richiamando il relativo metodosetContentType
e passando il tipo di contenuto dell'oggettoBLOB
. - Creare un oggetto
javax.servlet.ServletOutputStream
utilizzato per scrivere il flusso di dati del modulo nel browser Web client richiamando il metodogetOutputStream
dell'oggettojavax.servlet.http.HttpServletResponse
. - Creare una matrice di byte e popolarla richiamando il metodo
getBinaryData
dell'oggettoBLOB
. Questa attività assegna il contenuto dell'oggettoFormsResult
alla matrice di byte. - Richiama il metodo
write
dell'oggettojavax.servlet.http.HttpServletResponse
per inviare il flusso di dati del modulo al browser Web client. Passare la matrice di byte al metodowrite
.
- Creare un oggetto
Consulta anche
Richiamare AEM Forms utilizzando la codifica Base64