Invocar AEM Forms mediante la API de Java invoking-aem-forms-using-the-javaapi
Los ejemplos de este documento solo son para AEM Forms en un entorno JEE.
AEM Forms se puede invocar mediante la API de Java de AEM Forms. Al utilizar la API de Java de AEM Forms, puede utilizar la API de invocación o las bibliotecas de cliente de Java. Las bibliotecas de cliente Java están disponibles para servicios como el servicio Rights Management. Estas API con establecimiento inflexible de tipos le permiten desarrollar aplicaciones Java que invocan AEM Forms.
La API de invocación son clases que se encuentran en com.adobe.idp.dsc
paquete. Con estas clases, se puede enviar una solicitud de invocación directamente a un servicio y controlar una respuesta de invocación que se devuelve. Utilice la API de invocación para invocar procesos de corta o larga duración creados con Workbench.
La forma recomendada de invocar un servicio mediante programación es utilizar una biblioteca de cliente Java que corresponda al servicio en lugar de la API de invocación. Por ejemplo, para invocar el servicio Encryption, utilice la biblioteca de cliente del servicio Encryption. Para realizar una operación del servicio Encryption, invoque un método que pertenezca al objeto de cliente del servicio Encryption. Puede cifrar un documento de PDF con una contraseña invocando la variable EncryptionServiceClient
del objeto encryptPDFUsingPassword
método.
La API de Java admite las siguientes funciones:
- Protocolo de transporte RMI para invocación remota
- Transporte de VM para invocación local
- SOAP para invocación remota
- Autenticación diferente, como nombre de usuario y contraseña
- Solicitudes de invocación sincrónicas y asincrónicas
Incluir archivos de biblioteca Java de AEM Forms
Invocar procesos de larga duración centrados en el ser humano
Invocar AEM Forms mediante servicios web
Estableciendo propiedades de conexión
Pasar datos a servicios de AEM Forms mediante la API de Java
Invocar un servicio mediante una biblioteca de cliente Java
Invocación de un proceso de corta duración mediante la API de invocación
Creación de una aplicación web Java que invoque un proceso de larga duración centrado en humanos
Incluir archivos de biblioteca Java de AEM Forms including-aem-forms-java-library-files
Para invocar mediante programación un servicio de AEM Forms mediante la API de Java, incluya los archivos de biblioteca necesarios (archivos JAR) en la ruta de clase del proyecto Java. Los archivos JAR que se incluyen en la ruta de clase de la aplicación cliente dependen de varios factores:
- El servicio AEM Forms que se va a invocar. Una aplicación cliente puede invocar uno o varios servicios.
- El modo en el que desea invocar un servicio de AEM Forms. Puede utilizar el modo EJB o SOAP. (Consulte Estableciendo propiedades de conexión.)
standalone.bat -b <Server IP> -c lc_turnkey.xml
para especificar una IP de servidor para EJB- Servidor de aplicaciones J2EE en el que está implementado AEM Forms.
Archivos JAR específicos del servicio service-specific-jar-files
En la tabla siguiente se enumeran los archivos JAR necesarios para invocar los servicios de AEM Forms.
adobe-repository-client.jar
commons-codec-1.3.jar
<directorio de instalación>/sdk/client-libs/common
<directorio de instalación>/sdk/client-libs\third-party
-
adobe-rightsmanagement-client.jar
-
namespace.jar
-
jaxb-api.jar
-
jaxb-impl.jar
-
jaxb-libs.jar
-
jaxb-xjc.jar
-
relaxngDatatype.jar
-
xsdlib.jar
Necesario para invocar el servicio de Rights Management.
Si AEM Forms está implementado en JBoss, incluya todos estos archivos.
<directorio de instalación>/sdk/client-libs/common
Directorio lib específico de JBoss
Modo de conexión y archivos JAR de la aplicación J2EE connection-mode-and-j2ee-application-jar-files
En la tabla siguiente se enumeran los archivos JAR que dependen del modo de conexión y del servidor de aplicaciones J2EE en el que AEM Forms está implementado.
</thead align="left">
-
activation.jar
-
axis.jar
-
commons-codec-1.3.jar
-
commons-collections-3.1.jar
-
commons-discovery.jar
-
commons-logging.jar
-
dom3-xml-apis-2.5.0.jar
-
jaxen-1.1-beta-9.jar
-
jaxrpc.jar
-
log4j.jar
-
mail.jar
-
saaj.jar
-
wsdl4j.jar
-
xalan.jar
-
xbean.jar
- xercesImpl.jar
- commons-httpclient-3.1.jar
si AEM Forms está implementado en el servidor de aplicaciones JBoss, incluya este archivo JAR.
El cargador de clases no encontrará las clases requeridas si jboss-client.jar y los archivos .jar a los que se hace referencia no están ubicados conjuntamente.
Directorio de biblioteca del cliente de JBoss
Si implementa la aplicación cliente en el mismo servidor de aplicaciones J2EE, no es necesario incluir este archivo.
Directorio de biblioteca específico de WebLogic
Si implementa la aplicación cliente en el mismo servidor de aplicaciones J2EE, no es necesario incluir este archivo.
-
com.ibm.ws.admin.client_6.1.0.jar
-
com.ibm.ws.webservices.thinclient_6.1.0.jar
-
si AEM Forms está implementado en el servidor de aplicaciones WebSphere, incluya estos archivos JAR.
-
(com.ibm.ws.webservices.thinclient_6.1.0.jar es necesario para invocar el servicio web).
Directorio lib específico de WebSphere ([WAS_HOME]/runtimes)
Si implementa la aplicación cliente en el mismo servidor de aplicaciones J2EE, no tiene que incluir estos archivos.
Invocación de escenarios invoking-scenarios
La siguiente tabla especifica la invocación de escenarios y enumera los archivos JAR necesarios para invocar correctamente AEM Forms.
</thead align="left"> xmp-uti
-
adobe-livecycle-client.jar
-
adobe-usermanager-client.jar
- jboss-client.jar
- adobe-forms-client.jar
- commons-httpclient-3.1.jar
servicio de Forms
servicio de extensiones de Acrobat Reader DC
Servicio de firmas
-
adobe-livecycle-client.jar
-
adobe-usermanager-client.jar
- jboss-client.jar
- commons-httpclient-3.1.jar
-
adobe-forms-client.jar
-
adobe-reader-extensions-client.jar
-
adobe-signatures-client.jar
-
adobe-livecycle-client.jar
-
adobe-usermanager-client.jar
-
wlclient.jar
-
activation.jar
-
axis.jar
-
commons-codec-1.3.jar
-
commons-collections-3.1.jar
-
commons-discovery.jar
-
commons-logging.jar
-
dom3-xml-apis-2.5.0.jar
-
jai_imageio.jar
-
jaxen-1.1-beta-9.jar
-
jaxrpc.jar
-
log4j.jar
-
mail.jar
-
saaj.jar
-
wsdl4j.jar
-
xalan.jar
-
xbean.jar
-
xercesImpl.jar
-
adobe-forms-client.jar
servicio de Forms
servicio de extensiones de Acrobat Reader DC
Servicio de firmas
-
adobe-livecycle-client.jar
-
adobe-usermanager-client.jar
-
wlclient.jar
-
activation.jar
-
axis.jar
-
commons-codec-1.3.jar
-
commons-collections-3.1.jar
-
commons-discovery.jar
-
commons-logging.jar
-
dom3-xml-apis-2.5.0.jar
-
jai_imageio.jar
-
jaxen-1.1-beta-9.jar
-
jaxrpc.jar
-
log4j.jar
-
mail.jar
-
saaj.jar
-
wsdl4j.jar
-
xalan.jar
-
xbean.jar
-
xercesImpl.jar
-
adobe-forms-client.jar
-
adobe-reader-extensions-client.jar
-
adobe-signatures-client.jar
Actualización de archivos JAR upgrading-jar-files
Si está actualizando desde la LiveCycle a AEM Forms, se recomienda incluir los archivos JAR de AEM Forms en la ruta de clase del proyecto Java. Por ejemplo, si utiliza servicios como el servicio Rights Management, encontrará un problema de compatibilidad si no incluye archivos JAR de AEM Forms en la ruta de clase.
Suponiendo que está actualizando a AEM Forms. Para utilizar una aplicación Java que invoque el servicio de Rights Management, incluya las versiones de AEM Forms de los siguientes archivos JAR:
- adobe-rightsmanagement-client.jar
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
Consulte también
Invocar AEM Forms mediante la API de Java
Estableciendo propiedades de conexión
Pasar datos a servicios de AEM Forms mediante la API de Java
Invocar un servicio mediante una biblioteca de cliente Java
Estableciendo propiedades de conexión setting-connection-properties
Las propiedades de conexión se establecen para invocar AEM Forms al utilizar la API de Java. Al establecer las propiedades de conexión, especifique si desea invocar los servicios de forma remota o local, así como el modo de conexión y los valores de autenticación. Se requieren valores de autenticación si la seguridad del servicio está habilitada. Sin embargo, si la seguridad del servicio está deshabilitada, no es necesario especificar los valores de autenticación.
El modo de conexión puede ser SOAP o EJB. El modo EJB utiliza el protocolo RMI/IIOP, y el rendimiento del modo EJB es mejor que el rendimiento del modo SOAP. El modo SOAP se utiliza para eliminar una dependencia del servidor de aplicaciones J2EE o cuando se encuentra un cortafuegos entre AEM Forms y la aplicación cliente. El modo SOAP utiliza el protocolo https como transporte subyacente y puede comunicarse entre los límites del cortafuegos. Si no existe ninguna dependencia del servidor de aplicaciones J2EE o un cortafuegos, se recomienda utilizar el modo EJB.
Para invocar correctamente un servicio de AEM Forms, establezca las siguientes propiedades de conexión:
-
DSC_DEFAULT_EJB_ENDPOINT: Si está utilizando el modo de conexión EJB, este valor representa la URL del servidor de aplicaciones J2EE en el que está implementado AEM Forms. Para invocar AEM Forms de forma remota, especifique el nombre del servidor de aplicaciones J2EE en el que está implementado AEM Forms. Si la aplicación cliente se encuentra en el mismo servidor de aplicaciones J2EE, puede especificar
localhost
. En función del servidor de aplicaciones J2EE en el que esté implementado AEM Forms, especifique uno de los siguientes valores:- JBoss:
https://<ServerName>:8080 (default port)
- WebSphere:
iiop://<ServerName>:2809 (default port)
- WebLogic:
t3://<ServerName>:7001 (default port)
- JBoss:
-
DSC_DEFAULT_SOAP_ENDPOINT: si utiliza el modo de conexión SOAP, este valor representa el extremo al que se envía una solicitud de invocación. Para invocar AEM Forms de forma remota, especifique el nombre del servidor de aplicaciones J2EE en el que está implementado AEM Forms. Si la aplicación cliente se encuentra en el mismo servidor de aplicaciones J2EE, puede especificar
localhost
(por ejemplo,http://localhost:8080
.)- El valor de puerto
8080
es aplicable si la aplicación J2EE es JBoss. Si el servidor de aplicaciones J2EE es IBM® WebSphere®, utilice el puerto9080
. Igualmente, si el servidor de aplicaciones J2EE es WebLogic, utilice el puerto7001
. (Estos valores son valores de puerto predeterminados. Si cambia el valor del puerto, utilice el número de puerto aplicable).
- El valor de puerto
-
DSC_TRANSPORT_PROTOCOL: Si utiliza el modo de conexión EJB, especifique
ServiceClientFactoryProperties.DSC_EJB_PROTOCOL
para este valor. Si está utilizando el modo de conexión SOAP, especifiqueServiceClientFactoryProperties.DSC_SOAP_PROTOCOL
. -
DSC_SERVER_TYPE: Especifica el servidor de aplicaciones J2EE en el que se implementa AEM Forms. Los valores válidos son
JBoss
,WebSphere
,WebLogic
.- Si establece esta propiedad de conexión en
WebSphere
, eljava.naming.factory.initial
el valor se establece encom.ibm.ws.naming.util.WsnInitCtxFactory
. - Si establece esta propiedad de conexión en
WebLogic
, eljava.naming.factory.initial
el valor se establece enweblogic.jndi.WLInitialContextFactory
. - Del mismo modo, si establece esta propiedad de conexión en
JBoss
, eljava.naming.factory.initial
el valor se establece enorg.jnp.interfaces.NamingContextFactory
. - Puede configurar las variables
java.naming.factory.initial
a un valor que cumpla sus necesidades si no desea utilizar los valores predeterminados.
note note NOTE En lugar de utilizar una cadena para establecer la variable DSC_SERVER_TYPE
propiedad de conexión, puede utilizar un miembro estático delServiceClientFactoryProperties
clase. Se pueden utilizar los siguientes valores:ServiceClientFactoryProperties.DSC_WEBSPHERE_SERVER_TYPE
,ServiceClientFactoryProperties.DSC_WEBLOGIC_SERVER_TYPE
, oServiceClientFactoryProperties.DSC_JBOSS_SERVER_TYPE
. - Si establece esta propiedad de conexión en
-
DSC_CREDENTIAL_USERNAME: AEM Especifica el nombre de usuario de los formularios. Para que un usuario invoque correctamente un servicio de AEM Forms, necesita la función Usuario de servicios. Un usuario también puede tener otra función que incluya el permiso Invocar servicio. De lo contrario, se produce una excepción cuando intentan invocar un servicio. Si la seguridad del servicio está deshabilitada, no es necesario especificar esta propiedad de conexión.
-
DSC_CREDENTIAL_PASSWORD: Especifica el valor de contraseña correspondiente. Si la seguridad del servicio está deshabilitada, no es necesario especificar esta propiedad de conexión.
-
DSC_REQUEST_TIMEOUT: El límite de tiempo de espera de solicitud predeterminado para la solicitud SOAP es de 1200000 milisegundos (20 minutos). En ocasiones, una solicitud puede requerir más tiempo para completar la operación. Por ejemplo, una solicitud SOAP que recupera un gran conjunto de registros puede requerir un límite de tiempo de espera más largo. Puede usar el complemento
ServiceClientFactoryProperties.DSC_REQUEST_TIMEOUT
para aumentar el límite de tiempo de espera de llamada de solicitud para las solicitudes SOAP.nota: solo las invocaciones basadas en SOAP admiten la propiedad DSC_REQUEST_TIMEOUT.
Para establecer las propiedades de conexión, realice las siguientes tareas:
-
Crear un
java.util.Properties
mediante su constructor. -
Para establecer la variable
DSC_DEFAULT_EJB_ENDPOINT
propiedad de conexión, invocar eljava.util.Properties
del objetosetProperty
y pasar los siguientes valores:- El
ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT
valor de enumeración - Valor de cadena que especifica la dirección URL del servidor de aplicaciones J2EE que aloja AEM Forms
note note NOTE Si está utilizando el modo de conexión SOAP, especifique el ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT
valor de enumeración en lugar deServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT
valor de enumeración. - El
-
Para establecer la variable
DSC_TRANSPORT_PROTOCOL
propiedad de conexión, invocar eljava.util.Properties
del objetosetProperty
y pasar los siguientes valores:- El
ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL
valor de enumeración - El
ServiceClientFactoryProperties.DSC_EJB_PROTOCOL
valor de enumeración
note note NOTE Si está utilizando el modo de conexión SOAP, especifique el ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL
valor de enumeración en lugar deServiceClientFactoryProperties.DSC_EJB_PROTOCOL
valor de enumeración. - El
-
Para establecer la variable
DSC_SERVER_TYPE
propiedad de conexión, invocar eljava.util.Properties
del objetosetProperty
y pasar los siguientes valores:-
El
ServiceClientFactoryProperties.DSC_SERVER_TYPE
valor de enumeración -
Un valor de cadena que especifica el servidor de aplicaciones J2EE que aloja AEM Forms (por ejemplo, si AEM Forms está implementado en JBoss, especifique
JBoss
).- Para establecer la variable
DSC_CREDENTIAL_USERNAME
propiedad de conexión, invocar eljava.util.Properties
del objetosetProperty
y pasar los siguientes valores:
- Para establecer la variable
-
El
ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME
valor de enumeración -
Valor de cadena que especifica el nombre de usuario necesario para invocar AEM Forms
- Para establecer la variable
DSC_CREDENTIAL_PASSWORD
propiedad de conexión, invocar eljava.util.Properties
del objetosetProperty
y pasar los siguientes valores:
- Para establecer la variable
-
El
ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD
valor de enumeración -
Un valor de cadena que especifica el valor de contraseña correspondiente
-
Configuración del modo de conexión EJB para JBoss
El siguiente ejemplo de código Java establece las propiedades de conexión para invocar AEM Forms implementado en JBoss y utilizar el modo de conexión EJB.
Properties ConnectionProps = new Properties();
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT, "https://<hostname>:8080");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_EJB_PROTOCOL);
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_DOCUMENT_HTTP_ENDPOINT,"https://<hostname>:8080");
Configuración del modo de conexión EJB para WebLogic
En el siguiente ejemplo de código Java se establecen las propiedades de conexión para invocar AEM Forms implementado en WebLogic y utilizar el modo de conexión EJB.
Properties ConnectionProps = new Properties();
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT, "t3://localhost:7001");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_EJB_PROTOCOL);
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "WebLogic");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password");
Configuración del modo de conexión EJB para WebSphere
El siguiente ejemplo de código Java establece las propiedades de conexión para invocar AEM Forms implementado en WebSphere y utilizar el modo de conexión EJB.
Properties ConnectionProps = new Properties();
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT, "iiop://localhost:2809");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_EJB_PROTOCOL);
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "WebSphere");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password");
Configuración del modo de conexión SOAP
El siguiente ejemplo de código Java establece las propiedades de conexión en modo SOAP para invocar AEM Forms implementado en JBoss.
Properties ConnectionProps = new Properties();
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://localhost:8080");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password");
Establecer propiedades de conexión cuando la seguridad del servicio está deshabilitada
El siguiente ejemplo de código Java establece las propiedades de conexión necesarias para invocar AEM Forms implementado en el servidor de aplicaciones JBoss y cuando la seguridad del servicio está deshabilitada.
Properties ConnectionProps = new Properties();
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT, "jnp://localhost:1099");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_EJB_PROTOCOL);
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss");
Configuración del modo de conexión SOAP con límite de tiempo de espera de solicitud personalizado
Properties ConnectionProps = new Properties();
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://localhost:8080");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password");
ConnectionProps.setProperty(ServiceClientFactoryProperties.DSC_REQUEST_TIMEOUT, "1800000"); // Request timeout limit 30 Minutes
Uso de un objeto Context para invocar AEM Forms
Puede usar un com.adobe.idp.Context
objeto para invocar un servicio de AEM Forms con un usuario autenticado (el com.adobe.idp.Context
representa un usuario autenticado). Cuando se utiliza un com.adobe.idp.Context
objeto, no es necesario configurar el DSC_CREDENTIAL_USERNAME
o DSC_CREDENTIAL_PASSWORD
propiedades. Puede obtener un com.adobe.idp.Context
al autenticar usuarios mediante el uso del objeto AuthenticationManagerServiceClient
del objeto authenticate
método.
El authenticate
El método devuelve un AuthResult
que contiene los resultados de la autenticación. Puede crear un com.adobe.idp.Context
invocando su constructor. A continuación, invoque el com.adobe.idp.Context
del objeto initPrincipal
y pase el AuthResult
, tal como se muestra en el código siguiente:
Context myCtx = new Context();
myCtx.initPrincipal(authResult);
En lugar de configurar la variable DSC_CREDENTIAL_USERNAME
o DSC_CREDENTIAL_PASSWORD
, puede invocar el método ServiceClientFactory
del objeto setContext
y pase el com.adobe.idp.Context
objeto. AEM Cuando utilice un usuario de formularios para invocar un servicio, asegúrese de que tiene la función denominada Services User
que es necesario para invocar un servicio de AEM Forms.
En el ejemplo de código siguiente se muestra cómo utilizar un com.adobe.idp.Context
dentro de la configuración de conexión que se utiliza para crear un objeto EncryptionServiceClient
objeto.
//Authenticate a user and use the Context object within connection settings
// Authenticate the user
String username = "wblue";
String password = "password";
AuthResult authResult = authClient.authenticate(username, password.getBytes());
//Set a Content object that represents the authenticated user
//Use the Context object to invoke the Encryption service
Context myCtx = new Context();
myCtx.initPrincipal(authResult);
//Set connection settings
Properties connectionProps = new Properties();
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT, "jnp://<server>:1099");
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL, ServiceClientFactoryProperties.DSC_EJB_PROTOCOL);
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, ServiceClientFactoryProperties.DSC_JBOSS_SERVER_TYPE);
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DOCUMENT_HTTP_ENDPOINT,"jnp://<server>:1099");
//Create a ServiceClientFactory object
ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps);
myFactory.setContext(myCtx);
//Create an EncryptionServiceClient object
EncryptionServiceClient encryptClient = new EncryptionServiceClient(myFactory);
Invocación de escenarios invoking_scenarios-1
Los siguientes escenarios de invocación se analizan en esta sección:
- Una aplicación cliente que se ejecuta en su propia máquina virtual Java (JVM) invoca una instancia de AEM Forms independiente.
- Una aplicación cliente que se ejecuta en su propia JVM invoca instancias de AEM Forms agrupadas.
Aplicación cliente que invoca una instancia de AEM Forms independiente client-application-invoking-a-stand-alone-aem-forms-instance
El diagrama siguiente muestra una aplicación cliente ejecutándose en su propia JVM e invocando una instancia de AEM Forms independiente.
En esta situación, una aplicación cliente se está ejecutando en su propia JVM e invoca los servicios de AEM Forms.
Aplicación cliente que invoca instancias de AEM Forms agrupadas client-application-invoking-clustered-aem-forms-instances
En el diagrama siguiente se muestra una aplicación cliente ejecutándose en su propia JVM e invocando instancias de AEM Forms en un clúster.
Este escenario es similar a una aplicación cliente que invoca una instancia de AEM Forms independiente. Sin embargo, la dirección URL del proveedor es diferente. Si una aplicación cliente desea conectarse a un servidor de aplicaciones J2EE específico, la aplicación debe cambiar la URL para hacer referencia al servidor de aplicaciones J2EE específico.
No se recomienda hacer referencia a un servidor de aplicaciones J2EE específico porque la conexión entre la aplicación cliente y AEM Forms finaliza si el servidor de aplicaciones se detiene. Se recomienda que la dirección URL del proveedor haga referencia a un administrador JNDI de nivel de celda, en lugar de a un servidor de aplicaciones J2EE específico.
Las aplicaciones cliente que utilizan el modo de conexión SOAP pueden utilizar el puerto del equilibrador de carga HTTP para el clúster. Las aplicaciones cliente que utilizan el modo de conexión EJB pueden conectarse al puerto EJB de un servidor de aplicaciones J2EE específico. Esta acción administra el equilibrio de carga entre los nodos del clúster.
WebSphere
En el ejemplo siguiente se muestra el contenido de un archivo jndi.properties que se utiliza para conectarse a AEM Forms implementado en WebSphere.
java.naming.factory.initial=com.ibm.websphere.naming.
WsnInitialContextFactory
java.naming.provider.url=corbaloc::appserver1:9810,:appserver2:9810
WebLogic
El ejemplo siguiente muestra el contenido de un archivo jndi.properties que se utiliza para conectarse a AEM Forms que se implementa en WebLogic.
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
java.naming.provider.url=t3://appserver1:8001, appserver2:8001
JBoss
El ejemplo siguiente muestra el contenido de un archivo jndi.properties que se utiliza para conectarse a AEM Forms que se despliega en JBoss.
java.naming.factory.initial= org.jnp.interfaces.NamingContextFactory
java.naming.provider.url= jnp://appserver1:1099, appserver2:1099,
appserver3:1099
Consulte también
Inclusión AEM Forms archivos de biblioteca Java
Transmisión de datos a servicios de AEM Forms mediante la API de Java
Llamada a un servicio mediante un biblioteca de cliente Java
Transmisión de datos a servicios de AEM Forms mediante la API de Java passing-data-to-aem-forms-services-using-the-java-api
Las operaciones del servicio AEM Forms suelen consumir o producir documentos de PDF. Al invocar un servicio, a veces es necesario pasar un documento de PDF (u otros tipos de documento como datos XML) al servicio. Del mismo modo, a veces es necesario gestionar un documento de PDF que se devuelve desde el servicio. La clase Java que permite pasar datos desde y hacia servicios de AEM Forms es com.adobe.idp.Document
.
Los servicios de AEM Forms no aceptan un documento de PDF como otros tipos de datos, como java.io.InputStream
o una matriz de bytes. A com.adobe.idp.Document
también se puede utilizar para pasar otros tipos de datos, como datos XML, a los servicios.
A com.adobe.idp.Document
El objeto es un tipo serializable Java, por lo que se puede pasar a través de una llamada RMI. El lado receptor puede estar ubicado (el mismo host, el mismo cargador de clase), ser local (el mismo host, un cargador de clase diferente) o remoto (un host diferente). La transferencia del contenido del documento está optimizada para cada caso. Por ejemplo, si el remitente y el destinatario se encuentran en el mismo host, el contenido se pasa a través de un sistema de archivos local. (En algunos casos, los documentos se pueden pasar en la memoria).
Según la variable com.adobe.idp.Document
tamaño del objeto, los datos se transmiten dentro del com.adobe.idp.Document
objeto o almacenado en el sistema de archivos del servidor. Cualquier recurso de almacenamiento temporal ocupado por el com.adobe.idp.Document
se quitan automáticamente al com.adobe.idp.Document
eliminación. (Consulte Desechar objetos de documento.)
A veces es necesario conocer el tipo de contenido de una com.adobe.idp.Document
antes de poder pasarlo a un servicio. Por ejemplo, si una operación requiere un tipo de contenido específico, como application/pdf
Sin embargo, se recomienda determinar el tipo de contenido. (Consulte Determinación del tipo de contenido de un documento.)
El com.adobe.idp.Document
intenta determinar el tipo de contenido mediante los datos proporcionados. Si no se puede recuperar el tipo de contenido de los datos suministrados (por ejemplo, cuando los datos se suministraron como una matriz de bytes), establezca el tipo de contenido. Para establecer el tipo de contenido, invoque el com.adobe.idp.Document
del objeto setContentType
método. (Consulte Determinación del tipo de contenido de un documento)
Si los archivos colaterales residen en el mismo sistema de archivos, crear un com.adobe.idp.Document
El objeto es más rápido. Si los archivos auxiliares residen en sistemas de archivos remotos, se debe realizar una operación de copia, lo que afecta al rendimiento.
Una aplicación puede contener ambos com.adobe.idp.Document
y org.w3c.dom.Document
tipos de datos. No obstante, asegúrese de que cumple todos los requisitos del org.w3c.dom.Document
tipo de datos. Para obtener información sobre la conversión de un org.w3c.dom.Document
objeto a com.adobe.idp.Document
objeto, consulte Inicio rápido (modo EJB): rellenar previamente Forms con diseños flexibles mediante la API de Java.
com.adobe.idp.Document
, lea la información del documento en fragmentos de 2048 bytes o menos. Por ejemplo, el siguiente código lee la información del documento en fragmentos de 2048 bytes: // Set up the chunk size to prevent a potential memory leak
int buffSize = 2048;
// Determine the total number of bytes to read
int docLength = (int) inDoc.length();
byte [] byteDoc = new byte[docLength];
// Set up the reading position
int pos = 0;
// Loop through the document information, 2048 bytes at a time
while (docLength > 0) {
// Read the next chunk of information
int toRead = Math.min(buffSize, docLength);
int bytesRead = inDoc.read(pos, byteDoc, pos, toRead);
// Handle the exception in case data retrieval failed
if (bytesRead == -1) {
inDoc.doneReading();
inDoc.dispose();
throw new RuntimeException("Data retrieval failed!");
}
// Update the reading position and number of bytes remaining
pos += bytesRead;
docLength -= bytesRead;
}
// The document information has been successfully read
inDoc.doneReading();
inDoc.dispose();
Consulte también
Invocar AEM Forms mediante la API de Java
Estableciendo propiedades de conexión
Creación de documentos creating-documents
Crear un com.adobe.idp.Document
antes de invocar una operación de servicio que requiere un documento de PDF (u otros tipos de documento) como valor de entrada. El com.adobe.idp.Document
proporciona constructores que permiten crear un documento a partir de los siguientes tipos de contenido:
- Una matriz de bytes
- Un existente
com.adobe.idp.Document
objeto - A
java.io.File
objeto - A
java.io.InputStream
objeto - A
java.net.URL
objeto
Creación de un documento basado en una matriz de bytes creating-a-document-based-on-a-byte-array
En el ejemplo de código siguiente se crea un com.adobe.idp.Document
que se basa en una matriz de bytes.
Crear un objeto Document basado en una matriz de bytes
Document myPDFDocument = new Document(myByteArray);
Creación de un documento basado en otro documento creating-a-document-based-on-another-document
En el ejemplo de código siguiente se crea un com.adobe.idp.Document
objeto basado en otro com.adobe.idp.Document
objeto.
Crear un objeto Document basado en otro documento
//Create a Document object based on a byte array
InputStream is = new FileInputStream("C:\\Map.pdf");
int len = is.available();
byte [] myByteArray = new byte[len];
int i = 0;
while (i < len) {
i += is.read(myByteArray, i, len);
}
Document myPDFDocument = new Document(myByteArray);
//Create another Document object
Document anotherDocument = new Document(myPDFDocument);
Creación de un documento basado en un archivo creating-a-document-based-on-a-file
En el ejemplo de código siguiente se crea un com.adobe.idp.Document
objeto basado en un archivo de PDF denominado map.pdf. Este archivo se encuentra en la raíz del disco duro C. Este constructor intenta establecer el tipo de contenido MIME de com.adobe.idp.Document
usando la extensión de nombre de archivo.
El com.adobe.idp.Document
constructor que acepta un java.io.File
El objeto también acepta un parámetro Boolean. Estableciendo este parámetro en true
, el com.adobe.idp.Document
elimina el archivo. Esta acción significa que no tiene que eliminar el archivo después de pasarlo al com.adobe.idp.Document
constructor.
Estableciendo este parámetro en false
significa que conserva la propiedad de este archivo. Estableciendo este parámetro en true
es más eficiente. El motivo es que la variable com.adobe.idp.Document
puede mover el archivo directamente al área administrada local en lugar de copiarlo (lo que es más lento).
Crear un objeto Document basado en un archivo de PDF
//Create a Document object based on the map.pdf source file
File mySourceMap = new File("C:\\map.pdf");
Document myPDFDocument = new Document(mySourceMap,true);
Crear un documento basado en un objeto InputStream creating-a-document-based-on-an-inputstream-object
El siguiente ejemplo de código Java crea un com.adobe.idp.Document
objeto que se basa en un java.io.InputStream
objeto.
Crear un documento basado en un objeto InputStream
//Create a Document object based on an InputStream object
InputStream is = new FileInputStream("C:\\Map.pdf");
Document myPDFDocument = new Document(is);
Creación de un documento basado en contenido accesible desde una dirección URL creating-a-document-based-on-content-accessible-from-an-url
El siguiente ejemplo de código Java crea un com.adobe.idp.Document
objeto basado en un archivo de PDF denominado map.pdf. Este archivo se encuentra en una aplicación web denominada WebApp
que se está ejecutando el localhost
. Este constructor intenta establecer la variable com.adobe.idp.Document
tipo de contenido MIME del objeto mediante el tipo de contenido devuelto con el protocolo URL.
La URL proporcionada a la com.adobe.idp.Document
El objeto siempre se lee en el lado donde está el original com.adobe.idp.Document
se crea el objeto, como se muestra en este ejemplo:
Document doc = new Document(new java.net.URL("file:c:/temp/input.pdf"));
El archivo c:/temp/input.pdf debe estar ubicado en el equipo cliente (no en el equipo servidor). El equipo cliente es donde se lee el URL y donde se crea el com.adobe.idp.Document
objeto.
Creación de una documento basada en contenido accesible desde una URL
//Create a Document object based on a java.net.URL object
URL myURL = new URL("http", "localhost", 8080,"/WebApp/map.pdf");
//Create another Document object
Document myPDFDocument = new Document(myURL);
Consulte también
Invocar AEM Forms mediante la API de Java
Estableciendo propiedades de conexión
Gestión de documentos devueltos handling-returned-documents
Las operaciones de servicio que devuelven una documento PDF (u otros tipos de datos, como datos XML) como un valor de salida, devuelven un com.adobe.idp.Document
objeto. Una vez recibido un com.adobe.idp.Document
objeto, puede convertir a los formatos siguientes:
- Un
java.io.File
objeto - Un
java.io.InputStream
objeto - Una matriz de bytes
La siguiente línea de código convierte un com.adobe.idp.Document
objeto a java.io.InputStream
objeto. Supongamos que myPDFDocument
representa un com.adobe.idp.Document
objeto:
java.io.InputStream resultStream = myDocument.getInputStream();
Del mismo modo, puede copiar el contenido de una com.adobe.idp.Document
a un archivo local realizando las siguientes tareas:
- Crear un
java.io.File
objeto. - Invoque el
com.adobe.idp.Document
del objetocopyToFile
y pase eljava.io.File
objeto.
En el ejemplo de código siguiente se copia el contenido de un objeto com.adobe.idp.Document
objeto a un archivo denominado AnotherMap.pdf.
Copiar el contenido de un objeto de documento en un archivo
File outFile = new File("C:\\AnotherMap.pdf");
myDocument.copyToFile (outFile);
Consulte también
Invocar AEM Forms mediante la API de Java
Estableciendo propiedades de conexión
Determinación del tipo de contenido de un documento determining-the-content-type-of-a-document
Determinar el tipo MIME de una com.adobe.idp.Document
invocando el objeto de com.adobe.idp.Document
del objeto getContentType
método. Este método devuelve un valor de cadena que especifica el tipo de contenido del com.adobe.idp.Document
objeto. En la tabla siguiente se describen los diferentes tipos de contenido que devuelve AEM Forms.
application/pdf
application/vnd.adobe.xdp+xml
text/xml
application/vnd.fdf
application/vnd.adobe.xfdf
application/rdf+xml
application/octet-stream
NULL
En el ejemplo de código siguiente se determina el tipo de contenido de un elemento com.adobe.idp.Document
objeto.
Determinar el tipo de contenido de un objeto Document
//Determine the content type of the Document object
String ct = myDocument.getContentType();
System.out.println("The content type of the Document object is " +ct);
Consulte también
Invocar AEM Forms mediante la API de Java
Estableciendo propiedades de conexión
Desechar objetos de documento disposing-document-objects
Cuando ya no necesite un Document
objeto, se recomienda deshacerse de él invocando su dispose
método. Cada Document
consume un descriptor de archivo y hasta 75 MB de espacio en RAM en la plataforma host de la aplicación. Si un Document
no se elimina, el proceso de recopilación Java Garage lo elimina. Sin embargo, si se elimina antes, se debe utilizar el dispose
método, puede liberar la memoria ocupada por el Document
objeto.
Consulte también
Invocar AEM Forms mediante la API de Java
Incluir archivos de biblioteca Java de AEM Forms
Invocar un servicio mediante una biblioteca de cliente Java
Invocar un servicio mediante una biblioteca de cliente Java invoking-a-service-using-a-java-client-library
Las operaciones del servicio AEM Forms se pueden invocar mediante la API con establecimiento inflexible de tipos de un servicio, que se conoce como biblioteca de cliente Java. A Biblioteca de cliente Java es un conjunto de clases concretas que proporcionan acceso a los servicios implementados en el contenedor de servicios. Puede crear una instancia de un objeto Java que represente el servicio que se va a invocar en lugar de crear un InvocationRequest
mediante la API de invocación. La API de invocación se utiliza para invocar procesos, como procesos de larga duración, creados en Workbench. (Consulte Invocar procesos de larga duración centrados en el ser humano.)
Para realizar una operación de servicio, invoque un método que pertenezca al objeto Java. Una biblioteca de cliente Java contiene métodos que generalmente se asignan de uno a uno con operaciones de servicio. Cuando utilice una biblioteca de cliente Java, establezca las propiedades de conexión necesarias. (Consulte Estableciendo propiedades de conexión.)
Después de establecer las propiedades de conexión, cree un ServiceClientFactory
que se utiliza para crear una instancia de un objeto Java que le permite invocar un servicio. Cada servicio que tiene una biblioteca de cliente Java tiene un objeto de cliente correspondiente. Por ejemplo, para invocar el servicio de repositorio, cree un ResourceRepositoryClient
usando su constructor y pasando el objeto ServiceClientFactory
objeto. El ServiceClientFactory
es responsable de mantener la configuración de conexión necesaria para invocar los servicios de AEM Forms.
Aunque la obtención de un ServiceClientFactory
suele ser rápido, hay cierta sobrecarga cuando se utiliza la fábrica por primera vez. Este objeto está optimizado para su reutilización y, por lo tanto, cuando sea posible, utilice el mismo ServiceClientFactory
cuando se crean varios objetos de cliente Java. Es decir, no cree un ServiceClientFactory
para cada objeto de biblioteca de cliente que cree.
Existe una configuración del Administrador de usuarios que controla la duración de la aserción de SAML que se encuentra dentro de com.adobe.idp.Context
objeto que afecta a ServiceClientFactory
objeto. Esta opción controla todas las duraciones del contexto de autenticación a través de AEM Forms, incluidas todas las invocaciones realizadas mediante la API de Java. De forma predeterminada, el período de tiempo en el que ServiceCleintFactory
el objeto puede usarse en dos horas.
writeResource
se invoca la operación. Esta operación coloca un nuevo recurso en el repositorio.Puede invocar el servicio de repositorio utilizando un biblioteca de cliente Java y realizando los pasos siguientes:
-
Incluya los archivos JAR del cliente, como adobe-repositorio-client.jar, en la ruta de clase del proyecto Java. Para obtener información sobre la ubicación de estos archivos, consulte Incluidos AEM Forms archivos de biblioteca Java.
-
Establezca las propiedades de conexión necesarias para invocar un servicio.
-
Crear un
ServiceClientFactory
objeto invocando el método estáticocreateInstance
del objeto y pasando elServiceClientFactory
objeto que contiene las propiedades dejava.util.Properties
conexión. -
Crear un
ResourceRepositoryClient
usando su constructor y pasando el objetoServiceClientFactory
objeto. Utilice el objeto para invocar operaciones de servicio deResourceRepositoryClient
repositorio. -
Crear un
RepositoryInfomodelFactoryBean
objeto utilizando su constructor y pasenull
. Este objeto permite crear unResource
objeto que represente el contenido que se añade al repositorio. -
Crear un
Resource
objeto invocando elRepositoryInfomodelFactoryBean
método delnewImage
objeto y pasando los siguientes valores:- Un valor de ID único especificando
new Id()
. - Un valor UUID único especificando
new Lid()
. - Nombre del recurso. Puede especificar el nombre del archivo XDP.
Convierta el valor devuelto en
Resource
. - Un valor de ID único especificando
-
Crear un
ResourceContent
invocando el objeto deRepositoryInfomodelFactoryBean
del objetonewImage
y convertir el valor devuelto enResourceContent
. Este objeto representa el contenido que se agrega al repositorio. -
Crear un
com.adobe.idp.Document
al pasar un objetojava.io.FileInputStream
que almacena el archivo XDP para agregarlo al repositorio. (Consulte Crear un documento basado en un objeto InputStream.) -
Añada el contenido del
com.adobe.idp.Document
objeto aResourceContent
invocando el objeto deResourceContent
del objetosetDataDocument
método. Pase elcom.adobe.idp.Document
objeto. -
Establezca el tipo MIME del archivo XDP que se agregará al repositorio invocando el
ResourceContent
del objetosetMimeType
método y pasoapplication/vnd.adobe.xdp+xml
. -
Añada el contenido del
ResourceContent
objeto aResource
invocando el objeto deResource
del objetosetContent
y pasando elResourceContent
objeto. -
Añada una descripción del recurso invocando el
Resource
del objetosetDescription
y pasando un valor de cadena que representa una descripción del recurso. -
Agregue el diseño de formulario al repositorio invocando el
ResourceRepositoryClient
del objetowriteResource
y pasando los siguientes valores:- Valor de cadena que especifica la ruta de acceso a la colección de recursos que contiene el nuevo recurso
- El
Resource
objeto que se ha creado
Consulte también
Inicio rápido (modo EJB): Escritura de un recurso mediante la API de Java
Invocar AEM Forms mediante la API de Java
Incluir archivos de biblioteca Java de AEM Forms
Invocación de un proceso de corta duración mediante la API de invocación invoking-a-short-lived-process-using-the-invocation-api
Puede invocar un proceso de corta duración mediante la API de invocación de Java. Cuando invoca un proceso de corta duración mediante la API de invocación, pasa los valores de parámetro necesarios mediante una java.util.HashMap
objeto. Para que cada parámetro pase a un servicio, invoque el java.util.HashMap
del objeto put
y especifique el par nombre-valor que requiere el servicio para realizar la operación especificada. Especifique el nombre exacto de los parámetros que pertenecen al proceso de corta duración.
La discusión aquí trata sobre el uso de la API de invocación para invocar el siguiente proceso de corta duración de AEM Forms denominado MyApplication/EncryptDocument
.
MyApplication/EncryptDocument
Uso de Workbench. (Consulte Uso de Workbench.)Cuando se invoca este proceso, realiza las siguientes acciones:
- Obtiene el documento de PDF no protegido que se pasa al proceso. Esta acción se basa en
SetValue
operación. El parámetro de entrada para este proceso es undocument
variable de proceso denominadainDoc
. - Cifra el documento del PDF con una contraseña. Esta acción se basa en
PasswordEncryptPDF
operación. El documento del PDF cifrado por contraseña se devuelve en una variable de proceso denominadaoutDoc
.
Invocar el proceso de corta duración MyApplication/EncryptDocument mediante la API de invocación de Java invoke-the-myapplication-encryptdocument-short-lived-process-using-the-java-invocation-api
Invoque el MyApplication/EncryptDocument
proceso de corta duración mediante la API de invocación de Java:
-
Incluya archivos JAR de cliente, como adobe-livecycle-client.jar, en la ruta de clase del proyecto Java. (Consulte Incluir archivos de biblioteca Java de AEM Forms.)
-
Crear un
ServiceClientFactory
que contiene las propiedades de conexión. (Consulte Estableciendo propiedades de conexión.) -
Crear un
ServiceClient
usando su constructor y pasando el objetoServiceClientFactory
objeto. AServiceClient
permite invocar una operación de servicio. Administra tareas como localizar, enviar y enrutar solicitudes de invocación. -
Crear un
java.util.HashMap
mediante su constructor. -
Invoque el
java.util.HashMap
del objetoput
para que cada parámetro de entrada pase al proceso de larga duración. Debido a que elMyApplication/EncryptDocument
el proceso de corta duración requiere un parámetro de entrada de tipoDocument
, solo tiene que invocar elput
una vez, como se muestra en el ejemplo siguiente.code language-java //Create a Map object to store the parameter value for inDoc Map params = new HashMap(); InputStream inFile = new FileInputStream("C:\\Adobe\Loan.pdf"); Document inDoc = new Document(inFile); params.put("inDoc", inDoc);
-
Crear un
InvocationRequest
invocando el objeto deServiceClientFactory
del objetocreateInvocationRequest
y pasando los siguientes valores:- Un valor de cadena que especifica el nombre del proceso de larga duración que se va a invocar. Para invocar el
MyApplication/EncryptDocument
proceso, especificarMyApplication/EncryptDocument
. - Valor de cadena que representa el nombre de la operación de proceso. Normalmente, el nombre de una operación de proceso de corta duración es
invoke
. - El
java.util.HashMap
que contiene los valores de parámetro que requiere la operación de servicio. - Un valor booleano que especifica
true
, que crea una solicitud sincrónica (este valor es aplicable para invocar un proceso de corta duración).
- Un valor de cadena que especifica el nombre del proceso de larga duración que se va a invocar. Para invocar el
-
Envíe la solicitud de invocación al servicio invocando el
ServiceClient
del objetoinvoke
y pasando elInvocationRequest
objeto. Elinvoke
El método devuelve unInvocationReponse
objeto.note note NOTE Se puede invocar un proceso de larga duración pasando el valor false
como cuarto parámetro de la variablecreateInvocationRequest
método. Pasar el valorfalse
crea una solicitud asincrónica. -
Recupere el valor devuelto del proceso invocando el método
InvocationReponse
del objetogetOutputParameter
y pasando un valor de cadena que especifica el nombre del parámetro de salida. En esta situación, especifiqueoutDoc
(outDoc
es el nombre del parámetro de salida paraMyApplication/EncryptDocument
proceso). Convierta el valor devuelto enDocument
, como se muestra en el ejemplo siguiente.code language-java InvocationResponse response = myServiceClient.invoke(request); Document encryptDoc = (Document) response.getOutputParameter("outDoc");
-
Crear un
java.io.File
y asegúrese de que la extensión del archivo es .pdf. -
Invoque el
com.adobe.idp.Document
del objetocopyToFile
para copiar el contenido delcom.adobe.idp.Document
al archivo. Asegúrese de utilizar elcom.adobe.idp.Document
objeto que ha devuelto elgetOutputParameter
método.
Consulte también
Inicio rápido: invocación de un proceso de corta duración mediante la API de invocación
Invocar procesos de larga duración centrados en el ser humano
Incluir archivos de biblioteca Java de AEM Forms