Rendering dei PDF forms interattivi rendering-interactive-pdf-forms
Gli esempi e gli esempi contenuti in questo documento sono solo per AEM Forms in ambiente JEE.
Il servizio Forms esegue il rendering dei PDF forms interattivi sui dispositivi client, in genere i browser web, per raccogliere informazioni dagli utenti. Dopo aver eseguito il rendering di un modulo interattivo, un utente può immettere i dati nei campi del modulo e fare clic su un pulsante di invio presente nel modulo per inviare nuovamente le informazioni al servizio Forms. Adobe Reader o Acrobat devono essere installati nel computer che ospita il browser web client per rendere visibile un modulo interattivo di PDF.
Esempio di richiesta di prestito
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 ottenere un prestito e quindi di inviare i dati al servizio Forms. Il diagramma seguente mostra il flusso logico della richiesta di prestito.
Nella tabella seguente vengono descritti i passaggi del diagramma.
GetLoanForm
viene richiamato da una pagina HTML.GetLoanForm
utilizza l'API client del servizio Forms per eseguire il rendering del modulo di prestito al browser Web client. (Vedi Eseguire il rendering di un modulo PDF interattivo utilizzando l'API Java.)HandleData
. (Vedere "Modulo prestito".)HandleData
utilizza l'API client del servizio Forms per elaborare l'invio del modulo e recuperare i dati del modulo. I dati vengono quindi memorizzati in un database aziendale. (Vedi Gestione di Forms inviato.)Modulo prestito
Questo modulo di prestito interattivo viene visualizzato dal servlet Java GetLoanForm
dell'applicazione di prestito di esempio.
Modulo di conferma
Questo modulo viene visualizzato dal servlet Java HandleData
dell'applicazione di prestito di esempio.
Il servlet Java HandleData
precompila questo modulo con il nome e il cognome dell'utente e l'importo. Una volta precompilato, il modulo viene inviato al browser Web client. (Vedi Precompilazione di Forms con layout flessibili)
Servlet Java
L’esempio di applicazione di prestito è un esempio di applicazione di servizio Forms esistente come servlet Java. Un servlet Java è un programma Java in esecuzione su un server applicazioni J2EE, come 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 {
}
In genere, il codice API client del servizio Forms non viene inserito nel metodo doGet
o doPost
di un servlet Java. È consigliabile programmare 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 in questa sezione sono limitati al minimo e gli esempi di codice sono inseriti nel metodo doPost
.
Riepilogo dei passaggi
Per eseguire il rendering di un modulo PDF interattivo, eseguire le operazioni seguenti:
- Includi file di progetto.
- Crea un oggetto API client di Forms.
- Specifica i valori URI.
- Allega file al modulo (facoltativo).
- Eseguire il rendering di un modulo PDF interattivo.
- 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 eseguire un'operazione API client di un servizio Forms a livello di programmazione, è necessario creare un oggetto API client Forms. Se si utilizza l'API Java, creare un oggetto FormsServiceClient
. Se si utilizza l'API del servizio Web Forms, creare un oggetto FormsService
.
Specificare valori URI
È possibile specificare i valori URI richiesti dal servizio Forms per il rendering di un modulo. È possibile fare riferimento a una struttura di modulo salvata come parte di un'applicazione Forms utilizzando il valore URI radice contenuto repository:///
. Si consideri ad esempio il seguente design di modulo denominato Loan.xdp che si trova all'interno di un'applicazione Forms denominata FormsApplication:
Per accedere alla 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 radice del contenuto.
Il percorso di una risorsa in un’applicazione Forms è:
Applications/Application-name/Application-version/Folder.../Filename
I seguenti valori mostrano alcuni esempi di valori URI:
- Applications/AppraisalReport/1.0/Forms/FullForm.xdp
- Applications/AnotherApp/1.1/Assets/picture.jpg
- Applications/SomeApp/2.0/Resources/Data/XSDs/MyData.xsd
Quando esegui il rendering di un modulo interattivo, puoi definire valori URI come l’URL di destinazione in cui vengono pubblicati i dati del modulo. L’URL di destinazione può essere definito in uno dei seguenti modi:
- Sul pulsante Invia durante la progettazione della struttura del modulo in Designer
- Utilizzando l’API client del servizio Forms
Se l’URL di destinazione è definito nella progettazione del modulo, non eseguirne l’override con l’API client del servizio Forms. In altre parole, impostando l’URL di destinazione utilizzando l’API di Forms, l’URL specificato nella progettazione del modulo viene reimpostato su quello specificato utilizzando l’API. Se desideri inviare il modulo PDF all’URL di destinazione specificato nella progettazione del modulo, imposta a livello di programmazione l’URL di destinazione su una stringa vuota.
Se si dispone di un modulo contenente un pulsante di invio e un pulsante di calcolo (con uno script corrispondente in esecuzione sul server), è possibile definire a livello di programmazione l'URL a cui inviare il modulo per eseguire lo script. Utilizza il pulsante Invia nella struttura del modulo per specificare l’URL in cui vengono pubblicati i dati del modulo. (Vedi Calcolo dei dati del modulo.)
com.adobe.idp.Document
al servizio Forms. L'istanza com.adobe.idp.Document
contiene una struttura di modulo. (Vedi Trasmissione di documenti al servizio Forms.)Allega file al modulo
È possibile allegare file a un modulo. Quando si esegue il rendering di un modulo PDF con file allegati, gli utenti possono recuperare i file allegati in Acrobat utilizzando il riquadro dei file allegati. È possibile allegare tipi di file diversi a un modulo, ad esempio un file di testo, oppure a un file binario, ad esempio un file JPG.
Eseguire il rendering di un modulo PDF interattivo
Per eseguire il rendering di un modulo, utilizza una struttura di 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
o renderPDFForm2
dell'oggetto FormsServiceClient
.
renderPDFForm
utilizza un oggetto URLSpec
. La radice del contenuto del file XDP viene passata al servizio Forms utilizzando il metodo setContentRootURI
dell'oggetto URLSpec
. 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 progettazione del modulo.
Il metodo renderPDFForm2
accetta un'istanza com.adobe.idp.Document
che contiene il documento XDP o PDF da riprodurre.
Eseguire il rendering di un modulo PDF interattivo tramite l’API Java render-an-interactive-pdf-form-using-the-java-api
Esegui il rendering di un modulo PDF interattivo 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
-
Specificare i valori URI
- Creare un oggetto
URLSpec
che memorizza i valori URI utilizzando il relativo costruttore. - Richiama il metodo
setApplicationWebRoot
dell'oggettoURLSpec
e passa un valore stringa che rappresenta la radice web dell'applicazione. - Richiama il metodo
setContentRootURI
dell'oggettoURLSpec
e passa un valore stringa che specifica il valore URI della radice del contenuto. Assicurati che la progettazione del modulo sia nell’URI della directory principale del contenuto. In caso contrario, il servizio Forms genera un'eccezione. Per fare riferimento all'archivio, specificarerepository:///
. - Richiama il metodo
setTargetURL
dell'oggettoURLSpec
e passa un valore stringa che specifica il valore dell'URL di destinazione in cui vengono inviati i dati del modulo. Se definisci l’URL di destinazione nella progettazione del modulo, puoi trasmettere una stringa vuota. È inoltre possibile specificare l'URL a cui viene inviato un modulo per eseguire i calcoli.
- Creare un oggetto
-
Allega file al modulo
-
Creare un oggetto
java.util.HashMap
per archiviare gli allegati utilizzando il relativo costruttore. -
Richiama il metodo
put
dell'oggettojava.util.HashMap
per ogni file da allegare al modulo di cui è stato eseguito il rendering. Passa i seguenti valori a questo metodo:- Valore stringa che specifica il nome del file allegato, inclusa l'estensione.
-
Oggetto
com.adobe.idp.Document
contenente il file allegato.
note note NOTE Ripetere questo passaggio per ogni file da allegare al modulo. Questo passaggio è facoltativo ed è possibile passare null
se non si desidera inviare file allegati. -
-
Rendering di un modulo PDF interattivo
Richiama il metodo
renderPDFForm
dell'oggettoFormsServiceClient
e passa i seguenti valori:- Valore stringa che specifica il nome della struttura del modulo, inclusa l'estensione del nome file. Se si fa riferimento a una struttura di modulo che fa parte di un'applicazione Forms, assicurarsi di specificare il percorso completo, ad esempio
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
. - Oggetto
com.adobe.idp.Document
contenente dati da unire al modulo. Se non si desidera unire i dati, passare un oggettocom.adobe.idp.Document
vuoto. - 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
che contiene un flusso di dati del modulo che deve essere scritto nel browser Web client. - Valore stringa che specifica il nome della struttura del modulo, inclusa l'estensione del nome file. Se si fa riferimento a una struttura di modulo che fa parte di un'applicazione Forms, assicurarsi di specificare il percorso completo, ad esempio
-
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 popolarla 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
Eseguire il rendering di un modulo PDF interattivo utilizzando l’API del servizio web render-an-interactive-pdf-form-using-the-web-service-api
Esegui il rendering di un modulo PDF interattivo utilizzando l’API 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. -
Specificare i valori URI
- Creare un oggetto
URLSpec
che memorizza i valori URI utilizzando il relativo costruttore. - Richiama il metodo
setApplicationWebRoot
dell'oggettoURLSpec
e passa un valore stringa che rappresenta la radice web dell'applicazione. - Richiama il metodo
setContentRootURI
dell'oggettoURLSpec
e passa un valore stringa che specifica il valore URI della radice del contenuto. Assicurati che la progettazione del modulo sia nell’URI della directory principale del contenuto. In caso contrario, il servizio Forms genera un'eccezione. Per fare riferimento all'archivio, specificarerepository:///
. - Richiama il metodo
setTargetURL
dell'oggettoURLSpec
e passa un valore stringa che specifica il valore dell'URL di destinazione in cui vengono inviati i dati del modulo. Se definisci l’URL di destinazione nella progettazione del modulo, puoi trasmettere una stringa vuota. È inoltre possibile specificare l'URL a cui viene inviato un modulo per eseguire i calcoli.
- Creare un oggetto
-
Allega file al modulo
-
Creare un oggetto
java.util.HashMap
per archiviare gli allegati utilizzando il relativo costruttore. -
Richiama il metodo
put
dell'oggettojava.util.HashMap
per ogni file da allegare al modulo di cui è stato eseguito il rendering. Passa i seguenti valori a questo metodo:- Valore stringa che specifica il nome dell'allegato, inclusa l'estensione del nome file
-
Oggetto
BLOB
contenente il file allegato
note note NOTE Ripetere questo passaggio per ogni file da allegare al modulo. -
-
Rendering di un modulo PDF interattivo
Richiama il metodo
renderPDFForm
dell'oggettoFormsService
e passa i seguenti valori:- Valore stringa che specifica il nome della struttura del modulo, inclusa l'estensione del nome file. Se si fa riferimento a una struttura di modulo che fa parte di un'applicazione Forms, assicurarsi di specificare il percorso completo, ad esempio
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
. - Oggetto
BLOB
contenente dati da unire al modulo. Se non si desidera unire i dati, passarenull
. - 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 nel 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. - Valore stringa che specifica il nome della struttura del modulo, inclusa l'estensione del nome file. Se si fa riferimento a una struttura di modulo che fa parte di un'applicazione Forms, assicurarsi di specificare il percorso completo, ad esempio
-
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
Scrivere il flusso di dati del modulo nel 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. Quando viene scritto nel browser Web client, il modulo è visibile all'utente.