以下快速启动适用于XMP Utilities服务。
快速入门(SOAP模式):使用Java API导出XMP元数据
快速入门(SOAP模式):使用Java API导入XMP元数据
AEM Forms操作可以使用AEM Forms强类型API执行,并且连接模式应设置为SOAP。
如果使用UNIX等其他操作系统,则位于“使用AEM进行编程”表单中的快速启动基于Forms服务器,并将特定于Windows的路径替换为适用操作系统支持的路径。 同样,如果您使用的是其他J2EE应用程序服务器,请确保指定有效的连接属性。 参见 设置连接属性.
以下代码示例可检索、检查和保存XMP元数据。 (请参阅 从PDF文档导出元数据.)
/*
* This Java Quick Start uses the following JAR files
* 1. adobe-pdfutility-client.jar
* 2. adobe-livecycle-client.jar
* 3. adobe-usermanager-client.jar
* 4. activation.jar (required for SOAP mode)
* 5. axis.jar (required for SOAP mode)
* 6. commons-codec-1.3.jar (required for SOAP mode)
* 7. commons-collections-3.2.jar (required for SOAP mode)
* 8. commons-discovery.jar (required for SOAP mode)
* 9. commons-logging.jar (required for SOAP mode)
* 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode)
* 11. jaxen-1.1-beta-9.jar (required for SOAP mode)
* 12. jaxrpc.jar (required for SOAP mode)
* 13. log4j.jar (required for SOAP mode)
* 14. mail.jar (required for SOAP mode)
* 15. saaj.jar (required for SOAP mode)
* 16. wsdl4j.jar (required for SOAP mode)
* 17. xalan.jar (required for SOAP mode)
* 18. xbean.jar (required for SOAP mode)
* 19. xercesImpl.jar (required for SOAP mode)
*
* The JBoss files must be kept in the jboss\client folder. You can copy the client folder to
* your local development environment and then include the 3 JBoss JAR files in your class path
*
* These JAR files are located in the following path:
* <install directory>/sdk/client-libs/common
*
*
* <install directory>/jboss/bin/client
*
* If you want to invoke a remote forms server instance and there is a
* firewall between the client application and the server, then it is
* recommended that you use the SOAP mode. When using the SOAP mode,
* you have to include additional JAR files located in the following
* path
* <install directory>/sdk/client-libs/thirdparty
*
* For information about the SOAP
* mode and the additional JAR files that need to be included,
* see "Setting connection properties" in Programming
* with AEM Forms
*
* For complete details about the location of the AEM Forms JAR files,
* see "Including AEM Forms Java library files" in Programming
* with AEM Forms
*/
import com.adobe.livecycle.xmputility.*;
import com.adobe.livecycle.xmputility.client.*;
import java.util.*;
import java.io.*;
import com.adobe.idp.Document;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
public class ExportMetadata
{
public static void main(String[] args)
{
try
{
//Set connection properties required to invoke AEM Forms
Properties connectionProps = new Properties();
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "https://'[server]:[port]'");
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");
//Create a ServiceClientFactory instance
ServiceClientFactory factory = ServiceClientFactory.createInstance(connectionProps);
// Create a XMP Utility client
XMPUtilityServiceClient xmpUt = new XMPUtilityServiceClient(factory);
// Specify a PDF document whose metadata is to be exported
FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\Loan.pdf");
Document inDoc = new Document(fileInputStream);
// Export the XMP metadata object
XMPUtilityMetadata myXmp = xmpUt.exportMetadata(inDoc);
// Inspect the XMP metadata object (retrieve the document?s author in this case)
String name = myXmp.getAuthor();
System.out.println("The document?s author is " + name);
// Export the XMP metadata to an XML file
Document outDoc = xmpUt.exportXMP(inDoc);
File xmpFile = new File("c:\\LoanMetaData.xml");
outDoc.copyToFile(xmpFile);
}
catch (Exception e)
{
System.out.println("Error occurred: " + e.getMessage());
}
}
}
以下代码示例导入XMP元数据并将新的PDF文件保存到磁盘。 PDF文档基于名为Loan.pdf的PDF文件。 包含要导入到PDF文档中的元数据的XML文档基于名为的XML文件 LoanMetaData.xml. 有关此XML文件的信息,请参见 将元数据导入PDF文档.
/*
* This Java Quick Start uses the following JAR files
* 1. adobe-pdfutility-client.jar
* 2. adobe-livecycle-client.jar
* 3. adobe-usermanager-client.jar
* 4. activation.jar (required for SOAP mode)
* 5. axis.jar (required for SOAP mode)
* 6. commons-codec-1.3.jar (required for SOAP mode)
* 7. commons-collections-3.2.jar (required for SOAP mode)
* 8. commons-discovery.jar (required for SOAP mode)
* 9. commons-logging.jar (required for SOAP mode)
* 10. dom3-xml-apis-2.5.0.jar (required for SOAP mode)
* 11. jaxen-1.1-beta-9.jar (required for SOAP mode)
* 12. jaxrpc.jar (required for SOAP mode)
* 13. log4j.jar (required for SOAP mode)
* 14. mail.jar (required for SOAP mode)
* 15. saaj.jar (required for SOAP mode)
* 16. wsdl4j.jar (required for SOAP mode)
* 17. xalan.jar (required for SOAP mode)
* 18. xbean.jar (required for SOAP mode)
* 19. xercesImpl.jar (required for SOAP mode)
*
* The JBoss files must be kept in the jboss\client folder. You can copy the client folder to
* your local development environment and then include the 3 JBoss JAR files in your class path
*
* These JAR files are located in the following path:
* <install directory>/sdk/client-libs/common
*
*
* <install directory>/jboss/bin/client
*
* If you want to invoke a remote forms server instance and there is a
* firewall between the client application and the server, then it is
* recommended that you use the SOAP mode. When using the SOAP mode,
* you have to include additional JAR files located in the following
* path
* <install directory>/sdk/client-libs/thirdparty
*
* For information about the SOAP
* mode and the additional JAR files that need to be included,
* see "Setting connection properties" in Programming
* with AEM Forms
*
* For complete details about the location of the AEM Forms JAR files,
* see "Including AEM Forms Java library files" in Programming
* with AEM Forms
*/
import com.adobe.livecycle.xmputility.*;
import com.adobe.livecycle.xmputility.client.*;
import java.util.*;
import java.io.*;
import com.adobe.idp.Document;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
public class ImportMetadata
{
public static void main(String[] args)
{
try
{
//Set connection properties required to invoke AEM Forms
Properties connectionProps = new Properties();
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "https://'[server]:[port]'");
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");
//Create a ServiceClientFactory instance
ServiceClientFactory factory = ServiceClientFactory.createInstance(connectionProps);
//Create a XMP Utility client
XMPUtilityServiceClient xmpUt = new XMPUtilityServiceClient(factory);
//Specify a PDF document into which XMP metadata is imported
FileInputStream filePDF = new FileInputStream("C:\\Adobe\Loan.pdf");
Document inDoc = new Document(filePDF);
//Specify an XML file containing XMP metadata to import
FileInputStream fileXML = new FileInputStream("C:\\Adobe\LoanMetaData.xml");
Document xmpDoc = new Document(fileXML );
//Import the XMP metadata
Document outDoc = xmpUt.importXMP(inDoc, xmpDoc);
//Inspect the XMP metadata object (retrieve the document?s author in this case)
XMPUtilityMetadata myXmp = xmpUt.exportMetadata(outDoc);
String name = myXmp.getAuthor();
System.out.println("The document?s author is " + name);
//Save the PDF document containing the new metadata
File pdfFile = new File("c:\\Adobe\LoanWithMetadata.pdf");
outDoc.copyToFile(pdfFile);
}
catch (Exception e)
{
System.out.println("Error occurred: " + e.getMessage());
}
}
}