Show Menu
ARGOMENTI×

Rendering dei moduli per valore

In genere, una struttura del modulo creata in Designer viene passata facendo riferimento al servizio Forms. Le strutture del modulo possono essere di grandi dimensioni e, di conseguenza, è più efficiente passarle mediante riferimento per evitare di dover eseguire il marshalling dei byte delle strutture del modulo in base al valore. Il servizio Forms consente inoltre di memorizzare nella cache la struttura del modulo in modo che, se memorizzata nella cache, non sia necessario leggere continuamente la struttura del modulo.
Se una struttura del modulo contiene un attributo UUID, viene memorizzata nella cache. Il valore UUID è univoco per tutte le strutture del modulo 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 utilizzato più volte. Tuttavia, se il modulo non viene utilizzato ripetutamente e deve essere univoco, è possibile evitare di memorizzarlo nella cache utilizzando opzioni di memorizzazione nella cache impostate tramite l'API AEM Forms.
Il servizio Forms consente inoltre di risolvere la posizione del contenuto collegato all'interno della struttura del modulo. Ad esempio, le immagini collegate a cui viene fatto riferimento nella struttura del modulo sono URL relativi. Si presume sempre che il contenuto collegato sia relativo alla posizione della struttura del modulo. Pertanto, per risolvere il contenuto collegato è necessario determinarne la posizione applicando il percorso relativo alla posizione assoluta della struttura del modulo.
Anziché trasmettere una struttura del modulo per riferimento, è possibile trasmettere una struttura del modulo per valore. Il passaggio di una struttura del modulo in base al valore è efficiente quando si crea in modo dinamico una struttura del modulo; ovvero quando un'applicazione client genera l'XML che crea una struttura del modulo in fase di esecuzione. In questo caso, una struttura del modulo non viene memorizzata in un archivio fisico perché è memorizzata in memoria. Durante la creazione dinamica di una struttura del modulo in fase di esecuzione e il suo passaggio per valore, è possibile memorizzare il modulo nella cache e migliorare le prestazioni del servizio Forms.
Limiti di trasmissione di un modulo per valore
Quando una struttura del modulo viene passata per valore, si applicano le seguenti limitazioni:
  • Nessun contenuto collegato relativo può essere incluso nella struttura del modulo. Tutte le immagini e i frammenti devono essere incorporati nella struttura del modulo o essere denominati in modo assoluto.
  • Non è possibile eseguire calcoli sul lato server dopo il rendering del modulo. Se il modulo viene nuovamente inviato al servizio Forms, i dati vengono estratti e restituiti senza calcoli sul lato server.
  • Poiché HTML può utilizzare solo immagini collegate in fase di esecuzione, non è possibile generare HTML con immagini incorporate. Questo perché il servizio Forms supporta le immagini incorporate con HTML recuperando le immagini da una struttura del modulo di riferimento. Poiché una struttura del modulo passata per valore non dispone di una posizione di riferimento, non è possibile estrarre le immagini incorporate quando viene visualizzata la pagina HTML. Di conseguenza, i riferimenti immagine devono essere percorsi assoluti per il rendering in HTML.
Sebbene sia possibile eseguire il rendering di diversi tipi di moduli in base al valore (ad esempio, moduli HTML o che contengono diritti di utilizzo), in questa sezione viene illustrato il rendering di moduli PDF interattivi.
Per ulteriori informazioni sul servizio Forms, consultate Riferimento servizi per AEM Forms .

Riepilogo dei passaggi

Per eseguire il rendering di un modulo in base al valore, procedere come segue:
  1. Includere i file di progetto.
  2. Creare un oggetto API client Forms.
  3. Fare riferimento alla struttura del modulo.
  4. Eseguire il rendering di un modulo per valore.
  5. 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 state creando un'applicazione client utilizzando Java, includete i file JAR necessari. Se utilizzate servizi Web, accertatevi di includere i file proxy.
Creare un oggetto API client Forms
Prima di poter importare i dati in un modulo PDF API client a livello di programmazione, è necessario creare un client di servizi di integrazione dati. Quando create un client di servizi, definite le impostazioni di connessione necessarie per richiamare un servizio.
Riferimento alla struttura del modulo
Quando si esegue il rendering di un modulo in base al valore, è necessario creare un com.adobe.idp.Document oggetto che contenga la struttura del modulo da sottoporre a rendering. È possibile fare riferimento a un file XDP esistente oppure creare in modo dinamico una struttura del modulo in fase di esecuzione e compilare un com.adobe.idp.Document modulo con tali dati.
Questa sezione e il relativo avvio rapido fanno riferimento a un file XDP esistente.
Eseguire il rendering di un modulo per valore
Per eseguire il rendering di un modulo in base al valore, passare un' com.adobe.idp.Document istanza che contiene la struttura del modulo al inDataDoc parametro del metodo di rendering (può essere uno dei metodi di rendering dell' FormsServiceClient oggetto come renderPDFForm , (Deprecated) renderHTMLForm e così via). Questo valore del parametro è in genere riservato ai dati uniti al modulo. Analogamente, trasmettere al formQuery parametro un valore di stringa vuoto. Normalmente questo parametro richiede un valore stringa che specifica il nome della struttura del modulo.
Se si desidera visualizzare i dati all'interno del modulo, è necessario specificarli all'interno dell' xfa:datasets elemento . Per informazioni sull'architettura XFA, visitate https://partners.adobe.com/public/developer/xml/index_arch.html .
Scrivere il flusso di dati del modulo nel browser Web del client
Quando il servizio Forms esegue il rendering di un modulo per valore, 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.
Consulta anche

Eseguire il rendering di un modulo per valore utilizzando l'API Java

Eseguire il rendering di un modulo in base al valore 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. Riferimento alla struttura del modulo
    • Creare un java.io.FileInputStream oggetto che rappresenta la struttura del modulo da sottoporre a rendering utilizzando il relativo costruttore e passando un valore di stringa che specifica la posizione del file XDP.
    • Creare un com.adobe.idp.Document oggetto utilizzando il relativo costruttore e passando l' java.io.FileInputStream oggetto.
  4. Eseguire il rendering di un modulo per valore
    Richiama il metodo dell’ FormsServiceClient oggetto renderPDFForm e passa i seguenti valori:
    • Un valore di stringa vuoto. Normalmente questo parametro richiede un valore stringa che specifica il nome della struttura del modulo.
    • Un com.adobe.idp.Document oggetto che contiene la struttura del modulo. Normalmente questo valore di parametro è riservato ai dati uniti al modulo.
    • 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 può essere scritto nel browser Web del client.
  5. 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 allocare le dimensioni dell' InputStream oggetto. Richiamare il metodo dell' InputStream oggetto available per ottenere le dimensioni dell' InputStream oggetto.
    • Compilare l'array di byte con il flusso di dati del modulo richiamando il InputStream read metodo dell'oggetto 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.
Consulta anche

Eseguire il rendering di un modulo per valore utilizzando l'API del servizio Web

Eseguire il rendering di un modulo per valore utilizzando l'API di 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. Riferimento alla struttura del modulo
    • Creare un java.io.FileInputStream oggetto utilizzando il relativo costruttore. Passa un valore di stringa che specifica la posizione del file XDP.
    • Creare un BLOB oggetto utilizzando il relativo costruttore. L' BLOB oggetto viene utilizzato per memorizzare un documento PDF cifrato con una password.
    • Creare un array di byte che memorizza il contenuto dell' java.io.FileInputStream oggetto. È possibile determinare le dimensioni dell'array di byte ottenendo le dimensioni dell' java.io.FileInputStream oggetto utilizzando il relativo available metodo.
    • Compilare l'array di byte con i dati del flusso richiamando il metodo dell' java.io.FileInputStream oggetto read e passando l'array di byte.
    • Compilare l' BLOB oggetto richiamandone il setBinaryData metodo e passando l'array di byte.
  4. Eseguire il rendering di un modulo per valore
    Richiama il metodo dell’ FormsService oggetto renderPDFForm e passa i seguenti valori:
    • Un valore di stringa vuoto. Normalmente questo parametro richiede un valore stringa che specifica il nome della struttura del modulo.
    • Un BLOB oggetto che contiene la struttura del modulo. Normalmente questo valore di parametro è riservato ai dati uniti al modulo.
    • 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 memorizza 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.
  5. 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.
Consulta anche