Rendering 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 sul modulo per inviare le informazioni al servizio Forms. Adobe Reader o Acrobat deve essere installato sul computer in cui è installato il browser Web client per rendere visibile un modulo PDF interattivo.

NOTA

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 Forms Designer.

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.

ri_ri_finsrv_loanapp_v1

La tabella seguente descrive i passaggi descritti in questo diagramma.

Incremento

Descrizione

1

Il servlet Java GetLoanForm 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 Eseguire il rendering di un modulo PDF interattivo utilizzando 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 al HandleData Servlet Java. (Vedere "Loan form".)

4

Il servlet HandleData Java 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. (Vedere Gestione di Forms inviato.)

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 di Forms con layout scorrevoli.)

Modulo di prestito

Questo modulo di prestito interattivo viene rappresentato dal servlet Java GetLoanForm dell'applicazione di prestito di esempio.

ri_ri_loanform

Modulo di conferma

Questo modulo viene rappresentato dal servlet Java dell'applicazione di prestito di esempio HandleData.

ri_ri_confirm

Il Servlet Java HandleData 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 di Forms 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 si inserisce il codice API client del servizio Forms all'interno di un metodo doGet o doPost di un Servlet Java. È consigliabile posizionare il codice all'interno di una classe separata, creare un'istanza della classe dall'interno del metodo doPost (o doGet) 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 vengono inseriti nel metodo doPost.

NOTA

Per ulteriori informazioni sul servizio Forms, vedere Guida di riferimento dei servizi per 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 Forms Client API.
  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 Forms Client API

Prima di eseguire un'operazione API client di Forms Service a livello di programmazione, è necessario creare un oggetto API client Forms. Se utilizzate l'API Java, create un oggetto FormsServiceClient. Se utilizzate l'API del servizio Web di Forms, create un oggetto FormsService.

Specificare i valori URI

È possibile specificare i valori URI richiesti dal servizio Forms per eseguire il rendering di un modulo. Per fare riferimento a una struttura del modulo salvata come parte di un'applicazione Forms, utilizzare il valore URI radice del contenuto repository:///. Ad esempio, tenere in considerazione la seguente struttura del modulo denominata Loan.xdp all'interno di un'applicazione Forms denominata FormsApplication:

ri_ri_formrepository

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.

NOTA

Per informazioni sulla creazione di un'applicazione Forms utilizzando Workbench, vedere la Guida di Workbench Guida.

Il percorso di una risorsa che si trova 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 di Forms reimposta 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.)

NOTA

Invece di specificare un valore URL per fare riferimento a un file XDP, potete 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.)

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 dell'allegato. È possibile allegare tipi di file diversi a un modulo, ad esempio un file di testo, o a un file binario come un file JPG.

NOTA

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 dell'oggetto renderPDFForm o il metodo <a2/>.renderPDFForm2

L'oggetto renderPDFForm utilizza un oggetto URLSpec. 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 metodo renderPDFForm2 accetta un'istanza com.adobe.idp.Document che contiene il documento XDP o PDF per il rendering.

NOTA

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 di 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 Forms Client API

    • Creare un oggetto ServiceClientFactory che contiene le proprietà di connessione.
    • Creare un oggetto FormsServiceClient utilizzando il relativo costruttore e passando l'oggetto ServiceClientFactory.
  3. Specificare i valori URI

    • Creare un oggetto URLSpec che memorizza i valori URI utilizzando il relativo costruttore.
    • Richiamare il metodo URLSpec dell'oggetto setApplicationWebRoot e passare un valore di stringa che rappresenta la radice Web dell'applicazione.
    • Richiamare il metodo URLSpec dell'oggetto setContentRootURI e passare un valore di stringa che specifica il valore URI 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 URLSpec dell'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 oggetto java.util.HashMap per memorizzare gli allegati utilizzando il relativo costruttore.

    • Richiamare il metodo java.util.HashMap dell'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 oggetto com.adobe.idp.Document che contiene l'allegato del file.

    NOTA

    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.

  5. Rendering di un modulo PDF interattivo

    Richiamare il metodo FormsServiceClient dell'oggetto renderPDFForm e trasmettere 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 oggetto com.adobe.idp.Document che contiene i dati da unire al modulo. Se non si desidera unire i dati, passare un oggetto com.adobe.idp.Document vuoto.
    • Un oggetto PDFFormRenderSpec 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 oggetto URLSpec che contiene valori URI richiesti dal servizio Forms.
    • Un oggetto java.util.HashMap che memorizza gli allegati. Si tratta di 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 del client.

  6. Scrivere il flusso di dati del modulo nel browser Web del client

    • Creare un oggetto com.adobe.idp.Document richiamando il metodo FormsResult object ‘s getOutputContent.
    • Ottenere il tipo di contenuto dell'oggetto com.adobe.idp.Document richiamandone il metodo getContentType.
    • Impostare il tipo di contenuto dell'oggetto javax.servlet.http.HttpServletResponse richiamandone il metodo setContentType e passando il tipo di contenuto dell'oggetto com.adobe.idp.Document.
    • Creare un oggetto javax.servlet.ServletOutputStream utilizzato per scrivere il flusso di dati del modulo nel browser Web del client richiamando il metodo javax.servlet.http.HttpServletResponse dell'oggetto getOutputStream.
    • Creare un oggetto java.io.InputStream richiamando il metodo com.adobe.idp.Document dell'oggetto getInputStream.
    • Creare un array di byte e compilarlo con il flusso di dati del modulo richiamando il metodo InputStream dell'oggetto read e passando l'array di byte come argomento.
    • Richiamare il metodo javax.servlet.ServletOutputStream dell'oggetto write per inviare il flusso di dati del modulo al browser Web del client. Passate l'array di byte al metodo write.

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 di Forms (servizio Web):

  1. Includi file di progetto

    • Creare classi proxy Java che utilizzano il servizio WSDL di Forms.
    • Includete le classi proxy Java nel percorso della classe.
  2. Creare un oggetto Forms Client API

    Creare un oggetto FormsService e impostare i valori di autenticazione.

  3. Specificare i valori URI

    • Creare un oggetto URLSpec che memorizza i valori URI utilizzando il relativo costruttore.
    • Richiamare il metodo URLSpec dell'oggetto setApplicationWebRoot e passare un valore di stringa che rappresenta la radice Web dell'applicazione.
    • Richiamare il metodo URLSpec dell'oggetto setContentRootURI e passare un valore di stringa che specifica il valore URI 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 URLSpec dell'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 oggetto java.util.HashMap per memorizzare gli allegati utilizzando il relativo costruttore.

    • Richiamare il metodo java.util.HashMap dell'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 oggetto BLOB che contiene l'allegato del file

    NOTA

    Ripetere questo passaggio per ogni file da allegare al modulo.

  5. Rendering di un modulo PDF interattivo

    Richiamare il metodo FormsService dell'oggetto renderPDFForm e trasmettere 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 oggetto BLOB che contiene i dati da unire al modulo. Se non si desidera unire i dati, passare null.
    • Un oggetto PDFFormRenderSpec 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 oggetto URLSpec che contiene valori URI richiesti dal servizio Forms.
    • Un oggetto java.util.HashMap che memorizza gli allegati. Si tratta di un parametro facoltativo ed è possibile specificare null se non si desidera allegare file al modulo.
    • Un oggetto com.adobe.idp.services.holders.BLOBHolder vuoto compilato dal metodo. Viene utilizzato per memorizzare il modulo PDF di cui è stato effettuato il rendering.
    • Un oggetto javax.xml.rpc.holders.LongHolder vuoto compilato dal metodo. Questo argomento consente di memorizzare il numero di pagine nel modulo.
    • Un oggetto javax.xml.rpc.holders.StringHolder vuoto compilato dal metodo. (Questo argomento memorizza il valore delle impostazioni internazionali.)
    • Un oggetto com.adobe.idp.services.holders.FormsResultHolder vuoto che conterrà i risultati dell'operazione.

    Il metodo renderPDFForm compila l'oggetto com.adobe.idp.services.holders.FormsResultHolder passato come ultimo valore 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 oggetto FormResult ottenendo il valore del membro di dati com.adobe.idp.services.holders.FormsResultHolder dell'oggetto value.
    • Creare un oggetto BLOB contenente dati del modulo richiamando il metodo FormsResult dell'oggetto getOutputContent.
    • Ottenere il tipo di contenuto dell'oggetto BLOB richiamandone il metodo getContentType.
    • Impostare il tipo di contenuto dell'oggetto javax.servlet.http.HttpServletResponse richiamandone il metodo setContentType e passando il tipo di contenuto dell'oggetto BLOB.
    • Creare un oggetto javax.servlet.ServletOutputStream utilizzato per scrivere il flusso di dati del modulo nel browser Web del client richiamando il metodo javax.servlet.http.HttpServletResponse dell'oggetto getOutputStream.
    • Creare un array di byte e compilarlo richiamando il metodo BLOB dell'oggetto getBinaryData. Questa attività assegna il contenuto dell'oggetto FormsResult all'array di byte.
    • Richiamare il metodo javax.servlet.http.HttpServletResponse dell'oggetto write per inviare il flusso di dati del modulo al browser Web del client. Passate l'array di byte al metodo write.

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.

In questa pagina