Show Menu
ARGOMENTI×

Rendering di PDF forms interattivi

Il servizio Forms esegue il rendering dei PDF forms interattivi sui dispositivi client, in genere sui browser Web, per raccogliere informazioni dagli utenti. Dopo aver 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. Per rendere visibile un modulo PDF interattivo, è necessario installare Adobe Reader o Acrobat nel computer in cui è installato il browser Web del client.
Prima di eseguire il rendering di un modulo con 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 Designer di moduli.
Esempio di domanda di prestito
È stata introdotta un'applicazione di prestito di esempio per illustrare in che modo il servizio Forms utilizza i 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 inviare i dati al servizio Forms. Il diagramma seguente mostra il flusso logico dell'applicazione del prestito.
La tabella seguente descrive i passaggi descritti in questo diagramma.
Incremento
Descrizione
1
Il servlet GetLoanForm Java viene richiamato da una pagina HTML.
2
Il servlet GetLoanForm Java utilizza l'API client del servizio Forms per eseguire il rendering del modulo di prestito nel browser Web del client. (Vedere Rendering di un modulo PDF interattivo mediante l'API Java.)
3
Dopo che l'utente ha compilato il modulo di prestito e fatto clic sul pulsante di invio, i dati vengono inviati a HandleData Java Servlet. (Vedere "Modulo di prestito" .)
4
Il servlet HandleData Java utilizza l'API client del servizio Forms per elaborare l'invio e il recupero dei dati del modulo. I dati vengono quindi memorizzati in un database aziendale. (Vedere Gestione Dei Moduli Inviati.)
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 del rendering. (Vedere Precompilazione dei moduli con layout scorrevoli.)
Modulo di prestito
Questo modulo di prestito interattivo viene rappresentato dal servlet GetLoanForm Java dell'applicazione di prestito di esempio.
Modulo di conferma
Questo modulo viene rappresentato dal servlet HandleData Java dell'applicazione di prestito di esempio.
Il Servlet HandleData Java precompila il modulo con il nome e il cognome dell'utente e con l'importo. Una volta precompilato, il modulo viene inviato al browser Web del client. (Vedere Precompilazione dei moduli con layout scorrevoli)
Servlet Java
L'applicazione di prestito di esempio è un esempio di applicazione di servizio Forms esistente come servlet Java. Un servlet Java è un programma Java in esecuzione su un server applicazione 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 {

             }

Normalmente, non posizionare il codice API client del servizio Forms all'interno di un doGet doPost metodo o di un servlet Java. È consigliabile posizionare il codice all'interno di una classe separata, creare un'istanza della classe dall'interno del doPost metodo (o doGet metodo) e chiamare i metodi appropriati. Tuttavia, per la brevità del codice, gli esempi di codice riportati in questa sezione sono limitati al minimo e gli esempi di codice sono inseriti nel doPost metodo.
Per ulteriori informazioni sul servizio Forms, vedere Riferimento servizi per gli AEM Forms .
Riepilogo dei passaggi
Per eseguire il rendering di un modulo PDF interattivo, effettuare le seguenti operazioni:
  1. Includere i file di progetto.
  2. Creare un oggetto API client Forms.
  3. Specificate i valori URI.
  4. Allegare file al modulo (facoltativo).
  5. Eseguire il rendering di un modulo PDF interattivo.
  6. Scrivere il flusso di dati del modulo nel browser Web del client.
Includi file di progetto
Includete i file necessari nel progetto di sviluppo. Se create un'applicazione client utilizzando Java, includete i file JAR necessari. Se utilizzate i servizi Web, accertatevi di includere i file proxy.
Creare un oggetto API client Forms
Prima di eseguire un'operazione API client del servizio Forms a livello di programmazione, è necessario creare un oggetto API client Forms. Se utilizzate l'API Java, create un FormsServiceClient oggetto. Se si utilizza l'API del servizio Web Forms, creare un FormsService oggetto.
Specificare i valori URI
È possibile specificare i valori URI richiesti dal servizio Forms per eseguire il rendering di un modulo. Una struttura del modulo salvata come parte di un'applicazione Forms può essere utilizzata come riferimento utilizzando il valore URI della directory principale del contenuto repository:/// . Ad esempio, tenere in considerazione la seguente struttura del modulo denominata Loan.xdp , che si trova 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 renderPDFForm metodo) e repository:/// come valore URI radice del contenuto.
Per informazioni sulla creazione di un'applicazione Forms utilizzando 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:
  • Applications/AppraisalReport/1.0/Forms/FullForm.xdp
  • Applications/AnotherApp/1.1/Assets/picture.jpg
  • Applications/SomeApp/2.0/Resources/Data/XSDs/MyData.xsd
Quando si esegue il rendering di un modulo interattivo, è possibile definire valori URI quali l'URL di destinazione in cui vengono inviati i dati del modulo. L’URL di destinazione può essere definito in uno dei modi seguenti:
  • 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 all'interno della struttura del modulo, non ignorarlo con l'API client del servizio Forms. In altre parole, l'impostazione dell'URL di destinazione tramite l'API Forms consente di ripristinare l'URL specificato nella struttura del modulo a quello specificato tramite l'API. Se si desidera inviare il modulo PDF all'URL di destinazione specificato nella struttura del modulo, impostare l'URL di destinazione a livello di programmazione su una stringa vuota.
Se si dispone di un modulo contenente 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 in cui vengono inviati i dati del modulo. (Vedere Calcolo dei dati del modulo.)
Anziché specificare un valore URL per fare riferimento a un file XDP, è anche possibile trasmettere un' com.adobe.idp.Document istanza al servizio Forms. L' com.adobe.idp.Document istanza contiene una struttura del modulo. (vedere 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 degli allegati. È possibile allegare tipi di file diversi a un modulo, ad esempio un file di testo, o a un file binario come un file JPG.
L'associazione di file allegati a un modulo è facoltativa.
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 FormsServiceClient o renderPDFForm il renderPDFForm2 metodo dell'oggetto.
L'oggetto renderPDFForm utilizza un URLSpec oggetto. Il livello principale del contenuto del file XDP viene passato 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 renderPDFForm2 metodo accetta un' com.adobe.idp.Document istanza che contiene il documento XDP o PDF da sottoporre a rendering.
L'opzione PDF con tag non può essere impostata 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 Java

Eseguire il rendering di un modulo PDF interattivo utilizzando l'API Forms (Java):
  1. Includi file di progetto
    Includete file JAR client, ad esempio adobe-forms-client.jar, nel percorso di classe del progetto Java.
  2. Creare un oggetto API client Forms
    • Creare un ServiceClientFactory oggetto che contenga proprietà di connessione.
    • Creare un FormsServiceClient oggetto utilizzando il relativo costruttore e passando l' ServiceClientFactory oggetto.
  3. Specificare i valori URI
    • Creare un URLSpec oggetto che memorizza i valori URI utilizzando il relativo costruttore.
    • Richiamate il metodo dell' URLSpec oggetto setApplicationWebRoot e passate un valore di stringa che rappresenta la radice Web dell'applicazione.
    • Richiamate il metodo dell' URLSpec oggetto setContentRootURI e passate un valore di stringa che specifica il valore URI della radice 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 alla directory archivio, specificare repository:/// .
    • Richiamare il metodo dell' URLSpec oggetto setTargetURL e passare un valore di 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 al quale viene inviato il modulo per eseguire i calcoli.
  4. Allega file al modulo
    • Creare un java.util.HashMap oggetto per memorizzare gli allegati utilizzando il relativo costruttore.
    • Richiamare il metodo dell' java.util.HashMap oggetto put affinché ciascun file venga allegato al modulo di cui è stato effettuato il rendering. Passa i seguenti valori a questo metodo:
      • Una stringa che specifica il nome dell'allegato del file, inclusa l'estensione del nome del file.
    • Un com.adobe.idp.Document oggetto che contiene l'allegato del file.
    Ripetere questo passaggio per ogni file da allegare al modulo. Questo passaggio è facoltativo e puoi passare null se non desideri inviare allegati.
  5. Rendering di un modulo PDF interattivo
    Richiama il metodo dell’ FormsServiceClient oggetto renderPDFForm e passa i seguenti valori:
    • Una stringa che specifica il nome della struttura del modulo, inclusa l'estensione del nome file. Se si fa riferimento a una struttura del modulo che fa parte di un'applicazione Forms, è necessario specificare il percorso completo, ad esempio Applications/FormsApplication/1.0/FormsFolder/Loan.xdp .
    • Un com.adobe.idp.Document oggetto che contiene i dati da unire al modulo. Se non si desidera unire i dati, passare un com.adobe.idp.Document oggetto vuoto.
    • Un PDFFormRenderSpec oggetto che memorizza le opzioni di esecuzione. Si tratta di un parametro facoltativo e potete specificare null se non desiderate specificare le opzioni di esecuzione.
    • Un URLSpec oggetto che contiene valori URI richiesti dal servizio Forms.
    • Un java.util.HashMap oggetto che memorizza gli allegati. Si tratta di un parametro facoltativo e potete specificare null se non desiderate allegare file al modulo.
    Il renderPDFForm metodo restituisce un FormsResult oggetto che contiene un flusso di dati del modulo che deve essere scritto nel browser Web del client.
  6. Scrivere il flusso di dati del modulo nel browser Web del client
    • Creare un com.adobe.idp.Document oggetto richiamando il FormsResult metodo ‘s getOutputContent .
    • Ottenere il tipo di contenuto dell' com.adobe.idp.Document oggetto richiamandone il getContentType metodo.
    • Impostare il tipo di contenuto dell' javax.servlet.http.HttpServletResponse oggetto richiamandone setContentType il metodo e passando il tipo di contenuto dell' com.adobe.idp.Document oggetto.
    • Creare un javax.servlet.ServletOutputStream oggetto utilizzato per scrivere il flusso di dati del modulo nel browser Web del client richiamando il javax.servlet.http.HttpServletResponse metodo dell' getOutputStream oggetto.
    • Creare un java.io.InputStream oggetto richiamando il com.adobe.idp.Document metodo dell' getInputStream oggetto.
    • Creare un array di byte e compilarlo con il flusso di dati del modulo richiamando il metodo dell' InputStream oggetto read e passando l'array di byte come argomento.
    • Richiamare il metodo dell' javax.servlet.ServletOutputStream oggetto write per inviare il flusso di dati del modulo al browser Web del client. Passa l'array di byte al write metodo.

Eseguire il rendering di un modulo PDF interattivo utilizzando l'API del servizio Web

Eseguire il rendering di un modulo PDF interattivo utilizzando l'API Forms (servizio Web):
  1. Includi file di progetto
    • Creare classi proxy Java che utilizzano il WSDL del servizio Forms.
    • Includete le classi proxy Java nel percorso della classe.
  2. Creare un oggetto API client Forms
    Creare un FormsService oggetto e impostare i valori di autenticazione.
  3. Specificare i valori URI
    • Creare un URLSpec oggetto che memorizza i valori URI utilizzando il relativo costruttore.
    • Richiamate il metodo dell' URLSpec oggetto setApplicationWebRoot e passate un valore di stringa che rappresenta la radice Web dell'applicazione.
    • Richiamate il metodo dell' URLSpec oggetto setContentRootURI e passate un valore di stringa che specifica il valore URI della radice 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 alla directory archivio, specificare repository:/// .
    • Richiamare il metodo dell' URLSpec oggetto setTargetURL e passare un valore di 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 al quale viene inviato il modulo per eseguire i calcoli.
  4. Allega file al modulo
    • Creare un java.util.HashMap oggetto per memorizzare gli allegati utilizzando il relativo costruttore.
    • Richiamare il metodo dell' java.util.HashMap oggetto put affinché ciascun file venga allegato al modulo di cui è stato effettuato il rendering. Passa i seguenti valori a questo metodo:
      • Una stringa che specifica il nome dell'allegato del file, inclusa l'estensione del nome file
    • Un BLOB oggetto che contiene l'allegato del file
    Ripetere questo passaggio per ogni file da allegare al modulo.
  5. Rendering di un modulo PDF interattivo
    Richiama il metodo dell’ FormsService oggetto renderPDFForm e passa i seguenti valori:
    • Una stringa che specifica il nome della struttura del modulo, inclusa l'estensione del nome file. Se si fa riferimento a una struttura del modulo che fa parte di un'applicazione Forms, è necessario specificare il percorso completo, ad esempio Applications/FormsApplication/1.0/FormsFolder/Loan.xdp .
    • Un BLOB oggetto che contiene i dati da unire al modulo. Se non si desidera unire i dati, passare null .
    • Un PDFFormRenderSpec oggetto che memorizza le opzioni di esecuzione. Si tratta di un parametro facoltativo e potete specificare null se non desiderate specificare le opzioni di esecuzione.
    • Un URLSpec oggetto che contiene valori URI richiesti dal servizio Forms.
    • Un java.util.HashMap oggetto che memorizza gli allegati. Si tratta di un parametro facoltativo e potete specificare null se non desiderate allegare file al modulo.
    • Un oggetto vuoto com.adobe.idp.services.holders.BLOBHolder compilato dal metodo. Viene utilizzato per memorizzare il modulo PDF di cui è stato effettuato il rendering.
    • Un oggetto vuoto javax.xml.rpc.holders.LongHolder compilato dal metodo. Questo argomento consente di memorizzare il numero di pagine nel modulo.
    • Un oggetto vuoto javax.xml.rpc.holders.StringHolder compilato dal metodo. (Questo argomento memorizza il valore delle impostazioni internazionali.)
    • Un oggetto vuoto com.adobe.idp.services.holders.FormsResultHolder che conterrà i risultati dell'operazione.
    Il renderPDFForm metodo compila l' com.adobe.idp.services.holders.FormsResultHolder oggetto passato come valore dell'ultimo argomento con un flusso di dati del modulo che deve essere scritto nel browser Web del client.
  6. Scrivere il flusso di dati del modulo nel browser Web del client
    • Creare un FormResult oggetto ottenendo il valore del membro com.adobe.idp.services.holders.FormsResultHolder dati dell' value oggetto.
    • Creare un BLOB oggetto che contenga dati del modulo richiamando il FormsResult metodo dell' getOutputContent oggetto.
    • Ottenere il tipo di contenuto dell' BLOB oggetto richiamandone il getContentType metodo.
    • Impostare il tipo di contenuto dell' javax.servlet.http.HttpServletResponse oggetto richiamandone setContentType il metodo e passando il tipo di contenuto dell' BLOB oggetto.
    • Creare un javax.servlet.ServletOutputStream oggetto utilizzato per scrivere il flusso di dati del modulo nel browser Web del client richiamando il javax.servlet.http.HttpServletResponse metodo dell' getOutputStream oggetto.
    • Creare un array di byte e compilarlo richiamando il metodo dell' BLOB oggetto getBinaryData . Questa attività assegna il contenuto dell' FormsResult oggetto all'array di byte.
    • Richiamare il metodo dell' javax.servlet.http.HttpServletResponse oggetto write per inviare il flusso di dati del modulo al browser Web del client. Passa l'array di byte al write metodo.
Scrivere il flusso di dati del modulo nel browser Web del client
Quando il servizio Forms esegue il rendering di un modulo, restituisce un flusso di dati del modulo che è necessario scrivere nel browser Web del client. Una volta scritto nel browser Web del client, il modulo è visibile all'utente.