Il servizio Forms esegue il rendering dei PDF forms interattivi su dispositivi client, in genere browser web, per raccogliere informazioni dagli utenti. Una volta eseguito il rendering di un modulo interattivo, l’utente può immettere i dati nei campi del modulo e fare clic su un pulsante di invio situato nel modulo per inviare le informazioni al servizio Forms. Affinché sia visibile un modulo PDF interattivo, è necessario installare Adobe Reader o Acrobat nel computer che ospita il browser Web client.
Prima di eseguire il rendering di un modulo utilizzando il servizio Forms, creare una struttura del modulo. In genere, una struttura del modulo viene creata in Designer e salvata come file XDP. Per informazioni sulla creazione di una struttura del modulo, vedere Forms Designer.
Domanda di prestito di esempio
Viene introdotta un’applicazione di prestito di esempio per dimostrare come il servizio Forms utilizza moduli interattivi per raccogliere informazioni dagli utenti. Questa applicazione consente a un utente di compilare un modulo con i dati necessari per garantire un prestito e quindi di inviare i dati al servizio Forms. Il diagramma seguente illustra il flusso logico dell'applicazione di prestito.
La tabella seguente descrive i passaggi descritti in questo diagramma.
Incremento |
Descrizione |
---|---|
1 |
Il servlet Java |
2 |
Il |
3 |
Dopo che l'utente compila il modulo di prestito e fa clic sul pulsante di invio, i dati vengono inviati al |
4 |
Il |
5 |
Viene eseguito il rendering di un modulo di conferma nel browser web. I dati, come il nome e il cognome dell’utente, vengono uniti al modulo prima di eseguirne il rendering. (Consultare Precompilazione di Forms con layout fluidi.) |
Modulo di prestito
Questo modulo di prestito interattivo è reso dal GetLoanForm
Java Servlet dell'applicazione di prestito di esempio.
Modulo di conferma
Questo modulo viene reso dal servlet Java HandleData
dell'applicazione di prestito di esempio.
Il HandleData
Java Servlet precompila questo modulo con il nome e il cognome dell’utente e la quantità. Dopo la precompilazione, il modulo viene inviato al browser Web client. (Consulta Precompilazione di Forms con layout fluidi)
Servlet Java
L'applicazione di prestito di esempio è un esempio di un'applicazione di servizio Forms che esiste come servlet Java. Un servlet Java è un programma Java in esecuzione su un server applicativo J2EE, ad esempio WebSphere, e contiene il codice API client del servizio Forms.
Il codice seguente mostra la sintassi di un servlet Java denominato GetLoanForm:
public class GetLoanForm extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp
throws ServletException, IOException {
}
public void doPost(HttpServletRequest req, HttpServletResponse resp
throws ServletException, IOException {
}
Normalmente, non inserisci il codice API client del servizio Forms all'interno del metodo doGet
o doPost
di un servlet Java. È consigliabile posizionare il codice all'interno di una classe separata, creare un'istanza della classe all'interno del metodo doPost
(o del metodo doGet
) e chiamare i metodi appropriati. Tuttavia, per la brevità del codice, gli esempi di codice contenuti in questa sezione sono ridotti al minimo e gli esempi di codice vengono inseriti nel metodo doPost
.
Per ulteriori informazioni sul servizio Forms, consulta Riferimento servizi per AEM Forms.
Riepilogo dei passaggi
Per eseguire il rendering di un modulo PDF interattivo, eseguire le operazioni seguenti:
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 eseguire un’operazione API client di Forms Service a livello di programmazione, è necessario creare un oggetto API client Forms. Se utilizzi l’API Java, crea un oggetto FormsServiceClient
. Se utilizzi l’API del servizio Web Forms, crea un oggetto FormsService
.
Specificare i valori URI
È possibile specificare i valori URI richiesti dal servizio Forms per il rendering di un modulo. Per fare riferimento a una struttura del modulo salvata come parte di un'applicazione Forms, utilizzare il valore URI della directory principale contenuto repository:///
. Ad esempio, considerare la seguente struttura del modulo denominata Loan.xdp situata all'interno di un'applicazione Forms denominata FormsApplication:
Per accedere a questa struttura del modulo, specificare Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
come nome del modulo (il primo parametro passato al metodo renderPDFForm
) e repository:///
come valore URI della directory principale del contenuto.
Per informazioni sulla creazione di un'applicazione Forms tramite Workbench, vedere la Guida di Workbench.
Il percorso di una risorsa situata in un'applicazione Forms è:
Applications/Application-name/Application-version/Folder.../Filename
I seguenti valori mostrano alcuni esempi di valori URI:
Quando si esegue il rendering di un modulo interattivo, è possibile definire valori URI, ad esempio l’URL di destinazione in cui vengono inviati i dati del modulo. L’URL di destinazione può essere definito in uno dei seguenti modi:
Se l’URL di destinazione è definito all’interno della struttura del modulo, non sostituirlo con l’API client del servizio Forms. In altre parole, l’impostazione dell’URL di destinazione tramite l’API Forms reimposta l’URL specificato nella struttura del modulo su quello specificato utilizzando l’API. Se si desidera inviare il modulo PDF all’URL di destinazione specificato nella struttura del modulo, impostare programmaticamente l’URL di destinazione su una stringa vuota.
Se si dispone di un modulo che contiene un pulsante di invio e un pulsante di calcolo (con uno script corrispondente eseguito sul server), è possibile definire a livello di programmazione l’URL al quale viene inviato il modulo per eseguire lo script. Utilizzare il pulsante di invio nella struttura del modulo per specificare l’URL a cui vengono inviati i dati del modulo. (Vedere Calcolo dei dati del modulo.)
Invece di specificare un valore URL per fare riferimento a un file XDP, puoi anche passare un'istanza com.adobe.idp.Document
al servizio Forms. L’istanza com.adobe.idp.Document
contiene una struttura del modulo. (Vedere Trasmissione di documenti al servizio Forms.)
Allegare file al modulo
È possibile allegare file a un modulo. Quando si esegue il rendering di un modulo PDF con allegati ai file, gli utenti possono recuperare gli allegati in Acrobat utilizzando il riquadro allegato. È possibile allegare diversi tipi di file a un modulo, ad esempio un file di testo, o a un file binario come un file JPG.
L’allegato a un modulo di file è facoltativo.
Rendering di un modulo PDF interattivo
Per eseguire il rendering di un modulo, utilizzare una struttura del modulo creata in Designer e salvata come file XDP o PDF. È inoltre possibile eseguire il rendering di un modulo creato con Acrobat e salvato come file PDF. Per eseguire il rendering di un modulo PDF interattivo, richiamare il metodo renderPDFForm
dell’oggetto FormsServiceClient
o il metodo renderPDFForm2
.
L' renderPDFForm
utilizza un oggetto URLSpec
. La directory principale del contenuto del file XDP viene passata al servizio Forms utilizzando il metodo URLSpec
dell'oggetto setContentRootURI
. Il nome della struttura del modulo ( formQuery
) viene passato come valore di parametro separato. I due valori vengono concatenati per ottenere il riferimento assoluto alla struttura del modulo.
Il metodo renderPDFForm2
accetta un'istanza com.adobe.idp.Document
che contiene il documento XDP o PDF da sottoporre a rendering.
Impossibile impostare l’opzione di esecuzione PDF con tag se il documento di input è un documento PDF. Se il file di input è un file XDP, è possibile impostare l’opzione PDF con tag.
Eseguire il rendering di un modulo PDF interattivo 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
.Specificare i valori URI
URLSpec
che memorizza i valori URI utilizzando il relativo costruttore.setApplicationWebRoot
dell'oggetto URLSpec
e passa un valore stringa che rappresenta la radice Web dell'applicazione.setContentRootURI
dell'oggetto URLSpec
e passa un valore stringa che specifica il valore URI della directory principale del contenuto. Verificare che la struttura del modulo si trovi nell’URI della directory principale del contenuto. In caso contrario, il servizio Forms genera un'eccezione. Per fare riferimento al repository, specifica repository:///
.setTargetURL
dell'oggetto URLSpec
e passa un valore stringa che specifica il valore dell'URL di destinazione in cui vengono inviati i dati del modulo. Se si definisce l’URL di destinazione nella struttura del modulo, è possibile passare una stringa vuota. È inoltre possibile specificare l’URL a cui viene inviato un modulo per eseguire i calcoli.Allegare file al modulo
Creare un oggetto java.util.HashMap
per memorizzare gli allegati di file utilizzando il relativo costruttore.
Richiama il metodo put
dell'oggetto java.util.HashMap
per ciascun file da allegare al modulo di cui è stato eseguito il rendering. Passa i seguenti valori a questo metodo:
Un oggetto com.adobe.idp.Document
che contiene l'allegato del file.
Ripetere questo passaggio per ogni file da allegare al modulo. Questo passaggio è facoltativo ed è possibile passare null
* se non si desidera inviare allegati di file.*
Rendering di un modulo PDF interattivo
Richiama il metodo renderPDFForm
dell'oggetto FormsServiceClient
e passa i seguenti valori:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
.com.adobe.idp.Document
contenente i dati da unire al modulo. Se non si desidera unire i dati, passare un oggetto com.adobe.idp.Document
vuoto.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 deve 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
dell'oggetto read
e passando la matrice 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
.Eseguire il rendering di un modulo PDF interattivo 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.
Specificare i valori URI
URLSpec
che memorizza i valori URI utilizzando il relativo costruttore.setApplicationWebRoot
dell'oggetto URLSpec
e passa un valore stringa che rappresenta la radice Web dell'applicazione.setContentRootURI
dell'oggetto URLSpec
e passa un valore stringa che specifica il valore URI della directory principale del contenuto. Verificare che la struttura del modulo si trovi nell’URI della directory principale del contenuto. In caso contrario, il servizio Forms genera un'eccezione. Per fare riferimento al repository, specifica repository:///
.setTargetURL
dell'oggetto URLSpec
e passa un valore stringa che specifica il valore dell'URL di destinazione in cui vengono inviati i dati del modulo. Se si definisce l’URL di destinazione nella struttura del modulo, è possibile passare una stringa vuota. È inoltre possibile specificare l’URL a cui viene inviato un modulo per eseguire i calcoli.Allegare file al modulo
Creare un oggetto java.util.HashMap
per memorizzare gli allegati di file utilizzando il relativo costruttore.
Richiama il metodo put
dell'oggetto java.util.HashMap
per ciascun file da allegare al modulo di cui è stato eseguito il rendering. Passa i seguenti valori a questo metodo:
Un oggetto BLOB
contenente l'allegato del file
Ripetere questo passaggio per ogni file da allegare al modulo.
Rendering di un modulo PDF interattivo
Richiama il metodo renderPDFForm
dell'oggetto FormsService
e passa i seguenti valori:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
.BLOB
contenente i dati da unire al modulo. Se non desideri unire i dati, passa null
.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
.Scrivere il flusso di dati del modulo sul browser Web client
Quando il servizio Forms esegue il rendering di un modulo, 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.