Show Menu
ARGOMENTI×

Assemblaggio di documenti PDF a livello di programmazione

È possibile utilizzare l'API Assembler Service per assemblare più documenti PDF in un singolo documento PDF. L'illustrazione seguente mostra tre documenti PDF uniti in un singolo documento PDF.
Per assemblare due o più documenti PDF in un singolo documento PDF, è necessario un documento DDX. Un documento DDX descrive il documento PDF prodotto dal servizio Assembler. In altre parole, il documento DDX indica al servizio Assembler quali azioni eseguire.
Ai fini di questa discussione, si supponga di utilizzare il seguente documento DDX.
 <?xml version="1.0" encoding="UTF-8"?>
 <DDX xmlns="https://ns.adobe.com/DDX/1.0/">
     <PDF result="out.pdf">
         <PDF source="map.pdf" />
         <PDF source="directions.pdf" />
     </PDF>
 </DDX>

Questo documento DDX unisce due documenti PDF denominati map.pdf e directional.pdf in un unico documento PDF.
Per visualizzare un documento DDX che smonta un documento PDF, vedere Scomposizione programmatica dei documenti PDF.
Per ulteriori informazioni sul servizio Assembler, consultate Guida di riferimento ai servizi per AEM Forms .
Per ulteriori informazioni su un documento DDX, vedere Servizio Assembler e Riferimento DDX.

Considerazioni durante la chiamata del servizio Assembler con i servizi Web

Quando si aggiungono intestazioni e piè di pagina durante il montaggio di documenti di grandi dimensioni, si potrebbe verificare un OutOfMemory errore e i file non verranno assemblati. Per ridurre la possibilità che si verifichi questo problema, aggiungere un DDXProcessorSetting elemento al documento DDX, come illustrato nell'esempio seguente.
<DDXProcessorSetting name="checkpoint" value="2000" />
Potete aggiungere questo elemento come elemento secondario dell' DDX elemento o come elemento secondario di un PDF result elemento. Il valore predefinito per questa impostazione è 0 (zero), che disattiva il checkpoint e il DDX si comporta come se l' DDXProcessorSetting elemento non fosse presente. Se si è verificato un OutOfMemory errore, potrebbe essere necessario impostare il valore su un numero intero, generalmente compreso tra 500 e 5000. Un piccolo valore di checkpoint genera controlli più frequenti.

Riepilogo dei passaggi

Per assemblare un singolo documento PDF da più documenti PDF, effettuare le seguenti operazioni:
  1. Includere i file di progetto.
  2. Creare un client Assembler PDF.
  3. Fare riferimento a un documento DDX esistente.
  4. Riferimento a documenti PDF in input.
  5. Impostare le opzioni di esecuzione.
  6. Assemblare i documenti PDF di input.
  7. Estrarre i risultati.
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.
I seguenti file JAR devono essere aggiunti al percorso di classe del progetto:
  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-assembler-client.jar
  • adobe-utilities.jar (richiesto se AEM Forms è distribuito su JBoss)
  • jbossall-client.jar (richiesto se AEM Forms è distribuito su JBoss)
se AEM Forms è distribuito su un server applicazione J2EE supportato diverso da JBoss, è necessario sostituire i file adobe-utilities.jar e jbossall-client.jar con file JAR specifici del server applicazione J2EE in cui è distribuito AEM Forms.
Creare un client Assembler PDF
Prima di eseguire un'operazione Assembler a livello di programmazione, è necessario creare un client Assembler.
Riferimento a un documento DDX esistente
Per assemblare un documento PDF è necessario fare riferimento a un documento DDX. Si consideri, ad esempio, il documento DDX introdotto in questa sezione. Questo documento DDX indica al servizio Assembler di unire due documenti PDF in un unico documento PDF.
Riferimento a documenti PDF in input
Fate riferimento ai documenti PDF di input che desiderate trasmettere al servizio Assembler. Ad esempio, se si desidera trasmettere due documenti PDF di input denominati Mappa e Direzioni, è necessario trasmettere i file PDF corrispondenti.
Sia il file map.pdf che il file direction.pdf devono essere inseriti in un oggetto raccolta. Il nome della chiave deve corrispondere al valore dell'attributo di origine PDF nel documento DDX. Non importa quale sia il nome del file PDF se la chiave e l'attributo di origine nel documento DDX corrispondono.
Se si richiama l' AssemblerResult operazione, viene restituito un oggetto invokeDDX che contiene un oggetto raccolta. Questa operazione viene utilizzata quando si passano due o più documenti PDF di input al servizio Assembler. Tuttavia, se trasmettete un solo PDF di input al servizio Assembler e prevedete un solo documento di restituzione, richiamate l' invokeOneDocument operazione. Quando si richiama questa operazione, viene restituito un singolo documento. Per informazioni sull'utilizzo di questa operazione, vedere Assemblaggio di documenti PDF crittografati.
Impostazione delle opzioni di esecuzione
È possibile impostare opzioni di esecuzione che controllano il comportamento del servizio Assembler mentre esegue un processo. Ad esempio, potete impostare un'opzione che indichi al servizio Assembler di continuare l'elaborazione di un processo in caso di errore. Per informazioni sulle opzioni di esecuzione che è possibile impostare, consultate il riferimento alla AssemblerOptionSpec classe in Riferimento API di AEM Forms .
Assemblare i documenti PDF in input
Dopo aver creato il client del servizio, fare riferimento a un file DDX, creare un oggetto raccolta che memorizza i documenti PDF di input e impostare le opzioni di esecuzione, è possibile richiamare l'operazione DDX. Quando si utilizza il documento DDX specificato in questa sezione, i file map.pdf e direction.pdf vengono uniti in un unico documento PDF.
Estrarre i risultati
Il servizio Assembler restituisce un java.util.Map oggetto, che può essere ottenuto dall' AssemblerResult oggetto e che contiene i risultati dell'operazione. L' java.util.Map oggetto restituito contiene i documenti risultanti ed eventuali eccezioni.
Nella tabella seguente sono riepilogati alcuni dei valori chiave e dei tipi di oggetto che è possibile individuare nell' java.util.Map oggetto restituito.
Valore chiave
Tipo di oggetto
Descrizione
documentName
com.adobe.idp.Document
Contiene i documenti risultanti specificati in un elemento risultante DDX
documentName
Exception
Contiene eventuali eccezioni per il documento
OutputMapConstants.LOG_NAME
com.adobe.idp.Documen
Contiene il registro dei processi
Consulta anche

Assemblare documenti PDF utilizzando l'API Java

Assemblate un documento PDF utilizzando l'API di Assembler Service (Java):
  1. Includere i file di progetto.
    Includete file JAR client, ad esempio adobe-assembler-client.jar, nel percorso di classe del progetto Java.
  2. Creare un client Assembler PDF.
    • Creare un ServiceClientFactory oggetto che contenga proprietà di connessione.
    • Creare un AssemblerServiceClient oggetto utilizzando il relativo costruttore e passando l' ServiceClientFactory oggetto.
  3. Fare riferimento a un documento DDX esistente.
    • Creare un java.io.FileInputStream oggetto che rappresenta il documento DDX utilizzando il relativo costruttore e passando un valore di stringa che specifica la posizione del file DDX.
    • Creare un com.adobe.idp.Document oggetto utilizzando il relativo costruttore e passando l' java.io.FileInputStream oggetto.
  4. Riferimento a documenti PDF in input.
    • Creare un oggetto java.util.Map utilizzato per memorizzare i documenti PDF di input utilizzando un HashMap costruttore.
    • Per ciascun documento PDF di input, creare un java.io.FileInputStream oggetto utilizzando il relativo costruttore e passando la posizione del documento PDF di input.
    • Per ciascun documento PDF di input, creare un com.adobe.idp.Document oggetto e passare l' java.io.FileInputStream oggetto che contiene il documento PDF.
    • Per ciascun documento di input, aggiungere una voce all' java.util.Map oggetto richiamandone il put metodo e passando gli argomenti seguenti:
      • Un valore di stringa che rappresenta il nome della chiave. Questo valore deve corrispondere al valore dell'elemento di origine PDF specificato nel documento DDX.
      • Un com.adobe.idp.Document oggetto (o java.util.List oggetto che specifica più documenti) contenente il documento PDF di origine.
  5. Impostare le opzioni di esecuzione.
    • Creare un AssemblerOptionSpec oggetto che memorizza le opzioni di esecuzione utilizzando il relativo costruttore.
    • Impostate le opzioni di runtime per soddisfare i requisiti aziendali richiamando un metodo che appartiene all' AssemblerOptionSpec oggetto. Ad esempio, per indicare al servizio Assembler di continuare a elaborare un processo quando si verifica un errore, richiamare il metodo dell' AssemblerOptionSpec oggetto setFailOnError e passare false .
  6. Assemblare i documenti PDF di input.
    Richiamare il metodo dell' AssemblerServiceClient oggetto invokeDDX e trasmettere i seguenti valori obbligatori:
    • Un com.adobe.idp.Document oggetto che rappresenta il documento DDX da utilizzare
    • Un java.util.Map oggetto che contiene i file PDF di input da assemblare
    • Un com.adobe.livecycle.assembler.client.AssemblerOptionSpec oggetto che specifica le opzioni di esecuzione, incluso il font predefinito e il livello di registro del processo
    Il invokeDDX metodo restituisce un com.adobe.livecycle.assembler.client.AssemblerResult oggetto che contiene i risultati del processo ed eventuali eccezioni.
  7. Estrarre i risultati.
    Per ottenere il documento PDF appena creato, effettuare le seguenti operazioni:
    • Richiama il metodo dell’ AssemblerResult oggetto getDocuments . Questo restituisce un java.util.Map oggetto.
    • Iterare l' java.util.Map oggetto fino a individuare l' com.adobe.idp.Document oggetto risultante. Per ottenere il documento è possibile utilizzare l'elemento risultato PDF specificato nel documento DDX.
    • Richiamare il metodo dell' com.adobe.idp.Document oggetto copyToFile per estrarre il documento PDF.
    Se LOG_LEVEL è stato impostato per generare un registro, è possibile estrarre il registro utilizzando il AssemblerResult metodo dell' getJobLog oggetto.
Consulta anche

Assemblare documenti PDF utilizzando l'API del servizio Web

Assemblate i documenti PDF utilizzando l'API di Assembler Service (servizio Web):
  1. Includere i file di progetto.
    Creare un progetto Microsoft .NET che utilizza MTOM. Assicurarsi di utilizzare la seguente definizione WSDL: http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1 .
    Sostituire localhost con l'indirizzo IP del server in cui è installato AEM Forms.
  2. Creare un client Assembler PDF.
    • Creare un AssemblerServiceClient oggetto utilizzando il relativo costruttore predefinito.
    • Creare un AssemblerServiceClient.Endpoint.Address oggetto utilizzando il System.ServiceModel.EndpointAddress costruttore. Passa un valore di stringa che specifica il WSDL al servizio AEM Forms (ad esempio, http://localhost:8080/soap/services/AssemblerService?blob=mtom ). Non è necessario utilizzare l' lc_version attributo. Questo attributo viene utilizzato quando create un riferimento a un servizio.
    • Creare un System.ServiceModel.BasicHttpBinding oggetto ottenendo il valore del AssemblerServiceClient.Endpoint.Binding campo. Inserite il valore restituito in BasicHttpBinding .
    • Impostare il campo System.ServiceModel.BasicHttpBinding dell' MessageEncoding oggetto su WSMessageEncoding.Mtom . Questo valore assicura che venga utilizzato MTOM.
    • Abilitate l'autenticazione HTTP di base eseguendo le seguenti operazioni:
      • Assegnare il nome utente dei moduli AEM al campo AssemblerServiceClient.ClientCredentials.UserName.UserName .
      • Assegnare il valore della password corrispondente al campo AssemblerServiceClient.ClientCredentials.UserName.Password .
      • Assegnare il valore costante HttpClientCredentialType.Basic al campo BasicHttpBindingSecurity.Transport.ClientCredentialType .
      • Assegnare il valore costante BasicHttpSecurityMode.TransportCredentialOnly al campo BasicHttpBindingSecurity.Security.Mode .
  3. Fare riferimento a un documento DDX esistente.
    • Creare un BLOB oggetto utilizzando il relativo costruttore. L' BLOB oggetto viene utilizzato per memorizzare il documento DDX.
    • Creare un System.IO.FileStream oggetto richiamando il relativo costruttore e passando un valore di stringa che rappresenta la posizione del file del documento DDX e la modalità in cui aprire il file.
    • Creare un array di byte che memorizza il contenuto dell' System.IO.FileStream oggetto. È possibile determinare la dimensione dell'array di byte ottenendo la proprietà dell' System.IO.FileStream oggetto Length .
    • Compilare l'array di byte con i dati del flusso richiamando il System.IO.FileStream Read metodo dell'oggetto e passando l'array di byte, la posizione iniziale e la lunghezza del flusso da leggere.
    • Compilare l' BLOB oggetto assegnandone MTOM la proprietà con il contenuto dell'array di byte.
  4. Riferimento a documenti PDF in input.
    • Per ciascun documento PDF di input, creare un BLOB oggetto utilizzando il relativo costruttore. L' BLOB oggetto viene utilizzato per memorizzare il documento PDF di input.
    • Creare un System.IO.FileStream oggetto richiamando il relativo costruttore e passando un valore di stringa che rappresenta la posizione del file del documento PDF di input e la modalità di apertura del file.
    • Creare un array di byte che memorizza il contenuto dell' System.IO.FileStream oggetto. È possibile determinare la dimensione dell'array di byte ottenendo la proprietà dell' System.IO.FileStream oggetto Length .
    • Compilare l'array di byte con i dati del flusso richiamando il metodo dell' System.IO.FileStream oggetto Read . Passare l'array di byte, la posizione iniziale e la lunghezza del flusso da leggere.
    • Compilare l' BLOB oggetto assegnandone MTOM il campo con il contenuto dell'array di byte.
    • Create a MyMapOf_xsd_string_To_xsd_anyType object. Questo oggetto raccolta viene utilizzato per memorizzare i documenti PDF di input.
    • Per ciascun documento PDF di input, creare un MyMapOf_xsd_string_To_xsd_anyType_Item oggetto. Ad esempio, se si utilizzano due documenti PDF di input, creare due MyMapOf_xsd_string_To_xsd_anyType_Item oggetti.
    • Assegnare un valore stringa che rappresenta il nome chiave al campo dell' MyMapOf_xsd_string_To_xsd_anyType_Item oggetto key . Questo valore deve corrispondere al valore dell'elemento di origine PDF specificato nel documento DDX. (Eseguire questa operazione per ciascun documento PDF di input.)
    • Assegnare l' BLOB oggetto che memorizza il documento PDF nel campo dell' MyMapOf_xsd_string_To_xsd_anyType_Item oggetto value . (Eseguire questa operazione per ciascun documento PDF di input.)
    • Aggiungere l' MyMapOf_xsd_string_To_xsd_anyType_Item oggetto all' MyMapOf_xsd_string_To_xsd_anyType oggetto. Richiamare il MyMapOf_xsd_string_To_xsd_anyType metodo dell'oggetto Add e passare l' MyMapOf_xsd_string_To_xsd_anyType oggetto. (Eseguire questa operazione per ciascun documento PDF di input.)
  5. Impostare le opzioni di esecuzione.
    • Creare un AssemblerOptionSpec oggetto che memorizza le opzioni di esecuzione utilizzando il relativo costruttore.
    • Impostare le opzioni di runtime per soddisfare i requisiti aziendali assegnando un valore a un membro di dati appartenente all' AssemblerOptionSpec oggetto. Ad esempio, per indicare al servizio Assembler di continuare l'elaborazione di un processo in caso di errore, assegnare false al membro AssemblerOptionSpec dati dell' failOnError oggetto.
  6. Assemblare i documenti PDF di input.
    Richiama il metodo dell’ AssemblerServiceClient oggetto invoke e passa i seguenti valori:
    • Un BLOB oggetto che rappresenta il documento DDX.
    • L' mapItem array che contiene i documenti PDF di input. Le chiavi devono corrispondere ai nomi dei file sorgente PDF e i relativi valori devono essere gli BLOB oggetti che corrispondono a tali file.
    • Un AssemblerOptionSpec oggetto che specifica le opzioni di esecuzione.
    Il invoke metodo restituisce un AssemblerResult oggetto che contiene i risultati del processo ed eventuali eccezioni.
  7. Estrarre i risultati.
    Per ottenere il documento PDF appena creato, effettuare le seguenti operazioni:
    • Accedere al campo dell' AssemblerResult oggetto documents , ovvero un Map oggetto che contiene i documenti PDF risultanti.
    • Eseguire un'iterazione sull' Map oggetto fino a individuare la chiave che corrisponde al nome del documento risultante. Quindi, inserite l'elemento value dell'array in un BLOB .
    • Estrarre i dati binari che rappresentano il documento PDF accedendo alla BLOB proprietà dell' MTOM oggetto. Questo restituisce un array di byte che è possibile scrivere in un file PDF.
    Se LOG_LEVEL è stato impostato per generare un registro, è possibile estrarre il registro ottenendo il valore del membro AssemblerResult dati dell' jobLog oggetto.
Consulta anche