LiveCycle ES: AccessDeniedException: Access Denied. The system is currently in read-only mode.

0

Issue

If you are using LiveCycle Content Services you may notice the following error message in the server logs when starting the server:

00:05:55,646 ERROR [org.alfresco.service.descriptor.DescriptorService] Error installing embedded license
org.alfresco.service.license.LicenseException: Failed to save license
                at org.alfresco.repo.descriptor.RepositoryDescriptorDAOImpl.updateLicenseKey(RepositoryDescriptorDAOImpl.java:294)
                at org.alfresco.enterprise.license.AlfrescoLicenseManager.setLicenseKey(AlfrescoLicenseManager.java:220)

Caused by: org.alfresco.service.cmr.repository.ContentIOException: Failed to create directory for file storage: \\share\Adobe\lccs_data\contentstore\2012\10\26\0\5
                at org.alfresco.repo.content.filestore.FileContentStore.makeDirectory(FileContentStore.java:288)
                at org.alfresco.repo.content.filestore.FileContentStore.createNewFile(FileContentStore.java:234)
                at org.alfresco.repo.content.filestore.FileContentStore.createNewFile(FileContentStore.java:202)
                at org.alfresco.repo.content.filestore.FileContentStore.getWriterInternal(FileContentStore.java:478)
                at org.alfresco.repo.content.AbstractContentStore.getWriter(AbstractContentStore.java:242)
                at org.alfresco.repo.content.RoutingContentService.getWriter(RoutingContentService.java:402)
                at org.alfresco.repo.descriptor.RepositoryDescriptorDAOImpl.updateLicenseKey(RepositoryDescriptorDAOImpl.java:285)
                … 15 more
03:00:00,020 ERROR [org.quartz.core.JobRunShell] Job DEFAULT.indexBackupJobDetail threw an unhandled Exception:
org.alfresco.repo.security.permissions.AccessDeniedException: Access Denied.  The system is currently in read-only mode.

Reason

This error can occur when the user account that started the application server (JBoss/WebSphere/Weblogic) no longer has “write” permissions on the lccs_data shared directory used by content services (alfresco).

During startup sequence, Alfresco tries to create files in lccs_data shared directory, and if it cannot, it starts content services in read only mode.

Solution

Verify the user rights on the shared lccs_data directory, and try to create a folder/file manually.  Restarting the LiveCycle server will usually resolve the problem, but you should investigate the root cause why the user permissions are being lost in your environment.

LiveCycle Designer ES2: Unable to delete default value in rich-text fields

0

Issue

After updating to LiveCycle Designer ES2 QF4 (9.0.0.2.20110401.1.827986), you may notice that you are no longer able to delete the default value in rich-text fields.  It is possible to edit the value, but when you delete it, the value will re-appear in the field after refreshing.  This only happens for rich-text fields and not standard text fields.

Solution

This is an issue in LiveCycle Designer 9.5 QF4 and has been addressed in later versions, including Designer 10.  If you require a quickfix for this issue in LiveCycle Designer 9 you should contact the enterprise support team.

Workaround

You can delete the default value by opening the XML Source tab and removing the value manually.

reference: (183571067/3318438)

LiveCycle ES next release: Roadmap and Prerelease

0
We are planning to release the next version of LiveCycle in 2013. The upcoming LiveCycle release significantly extends LiveCycle capabilities with major innovations such as Mobile Forms, Forms Manager, Forms Portal and Mobile Workspace features. Here is a brief overview … Continue reading

Importing LiveCycle DSCs using command-line

0

- Ankush Kumar, Lead Software Engineer @ Adobe

Many a times, we have the requirement to deploy single or group of system or custom DSCs. System DSCs are deployed by LiveCycle Configuration Manager. However, in the case of custom DSCs, we need to manually deploy the component through LiveCycle Workbench. Sometimes, launching Workbench for solely deploying component seems like too much effort. Moreover, it’s not very easy to automate.

You can use the attached sample tool to deploy a DSC using command-line.

  1. Download and extract the tool archive on your machine. It contains a folder libs, a runme.bat file, and an ImportDSC.jar file.
  2. Place <LiveCycle Installation Dir>\sdk\client-libs\thirdparty\*.jar files in libs folder.
  3. Place adobe-usermanager-client.jar and adobe-livecycle-client.jar files in libs folder.
  4. Modify runme.bat accordingly.

The ImportDSC.jar is used in the following way in the runme.bat file (provided classpath is set):

java com.adobe.livecycle.sample.ImportDSC appserver=<websphere|weblogic|jboss> serverhost=<name of machine> port=<port of LC> username=<user to install DSC> password=<password of mentioned user> dscpath=<absolute path till DSC> force=<true|false>

The source code is also included in the archive. Please review it in case of any doubt and modify as per your requirements.

DISCLAIMER: This sample code is not officially delivered or supported as part of Adobe LiveCycle product. One should verify this on a testing environment before employing in production environment.

 

 

Using LiveCycle to programmatically split the PDF documents – Part 1

0

- Khushwant Singh, Content and Community Lead @ Adobe

A discussion on Adobe forums indicates that a lot of LiveCycle users are trying to figure out how to programmatically split a PDF file. Adobe LiveCycle provides a simple method to programmatically split PDF documents using LiveCycle Assembler service. You can split PDF files using the bookmark tags or by page number.

To split the PDF documents, you require:

  • A DDX (For more information about DDX, see Adobe LiveCycle DDX reference guide)
  • Source documents
  • Access to the running instance of Adobe LiveCycle

You can write a custom DDX document suited to your requirements.  Some of the most commonly requested DDX are:

DDX for splitting PDF document using bookmarks

In the following sample DDXLiveCycle Assembler service generates a single document for each level 1 bookmark in the source document (AssemblerResultPDF.pdf in this example). The Assembler service generates a name for each document that is the concatenation of the following items:

  • A string specified by the prefix attribute
  • A 6-digit sequence number (This number could be used to re-create the original order of the pages after the document is disassembled.)
  • The bookmark title
  • The filename extension .pdf

<PDFsFromBookmarks prefix="stmt">
<PDF source="doc1.pdf"/>
</PDFsFromBookmarks>

DDX for splitting PDF document using page numbers

In this sample DDXLiveCycle Assembler service generates documents for the mentioned page number from the source document. The Assembler service generates a name for each document based on the result parameter specified in the DDX.

<?xml version="1.0" encoding="UTF-8"?>
<DDX xmlns="http://ns.adobe.com/DDX/1.0/">
<PDF result="Final.pdf">
<PDF source="PDF1.pdf" pages="1"/>
</PDF>
<PDF result="Final2.pdf">
<PDF source="PDF1.pdf" pages="2"/>
</PDF>
</DDX>

DDX for splitting PDF document using the page range

In this sample DDXLiveCycle Assembler service generates documents for the mentioned range of the pages. The Assembler service generates a name for each document based on the result parameter specified in the DDX.

<?xml version="1.0" encoding="UTF-8"?>
<DDX xmlns="http://ns.adobe.com/DDX/1.0/">
<PDF result="Final.pdf">
<PDF source="PDF1.pdf" pages="1-5"/>
</PDF>
</DDX>

DDX for splitting PDF documents using page range from different PDF documents and creating a single resultant PDF document

In the following sample DDXLiveCycle Assembler service extracts pages from multiple documents as per the range of pages mentioned in the DDX and generates a single output document

<?xml version="1.0" encoding="UTF-8"?>
<DDX xmlns="http://ns.adobe.com/DDX/1.0/">
<PDF result="Final.pdf">
<PDF source="PDF1.pdf" pages="1-3"/>
<PDF source="PDF2.pdf" pages="4-5"/>
</PDF>
</DDX>

Sample program to split a PDF document
Let us write a simple Java program to split a PDF document into multiple documents.   To download the resources used in this sample program, click here.

Complete the following steps:

  1. Create a new file and add the following code  to the file
    <DDX xmlns="http://ns.adobe.com/DDX/1.0/">
    <PDFsFromBookmarks prefix="Readme">
    <PDF source="AssemblerResultPDF.pdf"/>
    </PDFsFromBookmarks>
    </DDX>

    For this example, save the XML file as shell_disassemble.xml.
  2. Create a new Java project and add shell_disassemble.xml to the project.
  3. Add the following libraries to your project. These libraries are required to invoke assembler service in SOAP mode:
    • adobe-assembler-client.jar
    • adobe-livecycle-client.jar
    • adobe-usermanager-client.jar
    • adobe-utilities.jar
    • jbossall-client.jar (use a different JAR file if LiveCycle ES is not deployed on JBoss)
    • activation.jar
    • axis.jar
    • commons-codec-..jar
    • commons-collections-..jar
    • commons-discovery.jar
    • commons-logging.jar
    • dom-xml-apis-.jar
    • jaxen-.-beta-jar
    • jaxrpc.jar
    • log4j.jar
    • mail.jar
    • saaj.jar
    • wsdl4j.jar
    • xalan.jar
    • xbean.jar
    • xercesImpl.jar
  4. Create a new class named DisassemblePDFSOAP .
  5. Add the source PDF file to the project. I have used AssemblerResultPDF.pdf
  6. Add following code to the class:
    import com.adobe.livecycle.assembler.client.*;
    import java.util.*;
    import java.io.InputStream;
    import java.io.*;
    import com.adobe.idp.Document;
    import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
    import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
    public class DisassemblePDFSOAP
    {
    public static void main (String args[]) {
    Document outDoc = null;
    try{
    //Set connection properties required to invoke LiveCycle ES2
    Properties connectionProps = new Properties();
    connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, “http://10.40.18.95: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”);//Create a ServiceClientFactory instance
    ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps);//Create an AssemblerServiceClient object
    AssemblerServiceClient assemblerClient = new AssemblerServiceClient(myFactory);FileInputStream myDDXFile = new FileInputStream(“E:\\workspace\\disassemble\\src\\shell_disassemble.xml”);
    //Create a Document object based on the DDX file
    Document myDDX = new Document(myDDXFile);//Create a Map object to store PDF source documents
    Map inputs = new HashMap();FileInputStream mySourceMap = new FileInputStream(“E:\\workspace\\backup\\disassemble\\src\\AssemblerResultPDF.pdf”);//Create a Document object based on the map.pdf source file
    Document myPDFSource = new Document(mySourceMap);//Place two entries into the Map object
    inputs.put(“AssemblerResultPDF.pdf”,myPDFSource);//Create an AssemblerOptionsSpec object
    AssemblerOptionSpec assemblerSpec = new AssemblerOptionSpec();
    assemblerSpec.setFailOnError(false);//Submit the job to the Assembler service
    AssemblerResult jobResult = assemblerClient.invokeDDX(myDDX,inputs,assemblerSpec);
    java.util.Map allDocs = jobResult.getDocuments();

    //Retrieve the result PDF documents from the Map object

    int index = 0;

    //Iterate through the map object to retrieve the result PDF document
    for (Iterator i = allDocs.entrySet().iterator(); i.hasNext();) {
    // Retrieve the Map object’s value

    Map.Entry e = (Map.Entry)i.next();
    if (index == 0)
    {
    Object o = e.getValue();

    //Cast the Object to a Document
    //and save to a file
    outDoc = (Document)o;
    File myOutFile = new File(“E:\\disassemble\\SplitPDF”+index +”.pdf”);
    outDoc.copyToFile(myOutFile);
    }
    index++;
    }
    if (index > 0)
    System.out.println(“The PDF document was disassembled into “+index+” PDF documents.”);
    else
    System.out.println(“The PDF document was not disassembled.”);

    }catch (Exception e) {
    System.out.println(“Error OCCURRED: “+e.getMessage());
    e.printStackTrace();
    }
    }
    }

  7. Modify the locations mentioned in the sample code according to the file paths in your machine
  8. Run the code.
  9. The code splits the file into multiple PDF documents based on the bookmarks or the page numbers specified in the DDX.

This is first blog in the series of the blogs about programmatically splitting the PDF document. In this blog I have shared sample code to split PDF document using bookmarks. In the follow-up blogs, I will include sample code to split PDF documents using:

  • Page numbers
  • Page range
  • Pages from different PDF documents and generate a single output document

LiveCycle ES3 SP1: Gemfire errors in server log after installing patches on top of 10.0.2

0

Issue

If you are using TCP locators in a LiveCycle cluster with ES3 (10.0.2) and have installed a service pack or patches on top of this version, you may notice some errors in the server log similar to the following:

com.adobe.livecycle.cache.CacheRuntimeException: Error loading cache configuration
at com.adobe.livecycle.cache.adapter.GemfireCacheAdapter.getCacheContainer(GemfireCacheAdapter.java:164)
at com.adobe.livecycle.cache.adapter.GemfireCacheAdapter.createRootRegion(GemfireCacheAdapter.java:853)
at com.adobe.livecycle.cache.adapter.GemfireCacheAdapter.init(GemfireCacheAdapter.java:218)
at com.adobe.livecycle.cache.adapter.GemfireCacheAdapter.<init>(GemfireCacheAdapter.java:207)
at com.adobe.livecycle.cache.adapter.CacheAdapterFactory.getCache(CacheAdapterFactory.java:103)

Caused by: com.gemstone.gemfire.SystemConnectException: Attempt to connect to distributed system timed out

If you have a UDP-based cluster caching mechanism, you are not affected by this issue.

Reason

This issue occurs when the Gemfire version on the server is different from the Gemfire version used by the TCP locators.  Gemfire.jar and GemFireVersion.properties are delivered in two different places in the LC installation – 1. Core EAR 2. /lib/caching directory.

Gemfire version 6.5.1.17 was used for LC ES3 (10.0.2).  To address some known issues a new Gemfire version (6.5.1.35) was used in later versions and patches.  This newer Gemfire version was used for the Core EAR, but unfortunately not included for updating the caching directory.

To verify the issue, compare the Gemfire version in the GFLocator.log file for your TCP Locator with the Gemfire version in the Gemfire logs for your application server at the following location:

  • JBoss: <adobe_temp_dir>/adobejb_<server_name>/caching/Gemfire.log
  • Weblogic: <adobe_temp_dir>/adobewl_<hostname>/caching/Gemfire.log
  • WebSphere: <adobe_temp_dir>/adobews_*/caching/Gemfire.log

You will find that Gemfire on the LiveCycle server has a higher version.

Solution

This issue has been addressed in SP2 and later patch versions.

Note: the patch installer will only update the default caching directory (<lc_install_dir>/lib/caching) on the machine where LC is installed.  If you are running LC on various machines, and/or use custom caching directories, you will need to update the 2 Gemfire files for your TCP locators manually.  All TCP locators need to be restarted before starting LC servers.

Workaround

For existing patches you can use the following workaround to fix the issue on your LiveCycle installation.

  1. Stop the LiveCycle server(s).
  2. Stop the TCP Locator(s).
  3. Go to <LC_INSTALL_DIR>/deploy folder.
  4. Open adobe-core-<appserver_name>.ear.
  5. Go to TCP locator installation directory. Typically the default location is <LC_INSTALL_DIR>/lib/caching.
  6. gemfire.jar and GemFireVersion.properties can be found here.
  7. Replace the two files above in the TCP locator with the same files from the core ear.
  8. Repeat the replacement procedure (steps 5 – 7) for each TCP locator.
  9. Start TCP Locator(s).
  10. Start LiveCycle server(s) in the Cluster.

Verify the Gemfire versions in GFLocator.log and Gemfire.log files. You should see the same Gemfire version in both files.

reference: (183615151/3327651)

Acrobat XI: new tab-stop feature available for rich-text fields

0

Information

With the latest release of Adobe Acrobat/Reader XI there is a new feature available for structuring text in rich-text fields in XFA-based forms.  You can now add/modify tab-stops in rich-text fields using new UI components.  Adding tab-stops in rich-text fields allows for better formatting and table-like structuring of the text, which is a much requested feature from customers and users.

Instructions

You download the sample file tabstops_richtext_field_dyn.pdf to see how this feature works.

1. Open the sample file in Acrobat/Reader XI.

2. Place the cursor in the large rich-text field.

3. Press CTRL+E on the keyboard to bring up the Form Field Text Properties toolbar.

4. Click the button “More…”

5. You will see the new Tabs dialog where you can create/modify the tabs in the field.

6. From here you can create/modify/delete the defined tab-stops, and change the alignment (Left, Right, Center, Decimal), or the position.

Notes

You can now also use the key combination CTRL+TAB on the keyboard to tab between tab-stops in the rich-text field.

The measurement units for the tab stops are inherited from the units defined in the Preferences (Edit > Preferences > Units & Guides > Page & Ruler Units):

Adobe Digital Rights Management Technologies – ACS vs. LCRM

0

When we meet with companies we get a substantial number of questions about how to protect digital content. Adobe has at least 2 offerings in the Digital Rights Management space, Adobe Content Server and Adobe LiveCycle Rights Management. These products both fall into the DRM category, but they solve very different problems for very different markets. This article will discuss the capabilities and licensing of each and what problems they are targeted at solving.

Adobe Content Server – DRM for Commercial eBooks

This product, also known as ACS, is capable of securing content in the ePub and PDF file formats. The product is sold by Adobe partners as a server license, and there are transaction charges incurred for each individual content license granted.

The target market for this offering is eBook or other digital content distributors such as Sony, Kobo, Barnes & Noble or Google. Content is licensed on a one to one basis and rights are applied at the time a specific item is purchased. More specifically, content is licensed to an individual with a specific Adobe ID or Vendor ID, and may not be consumed on reading devices that are not registered with that ID. ACS provides granular control over the rights that may be granted with each content license. For example a book store may sell a popular title for one price with the rights to read it on multiple devices, re-download it a future date and print a range of pages, and may also have the same book listed at a different price with more restrictive rights. Once rights are applied, generally at purchase time, these rights cannot be modified or revoked.

---

Read the complete post at Datalogics Blog.

Adobe LC RM protected documents containing Dynamic Text Watermarks are now supported in Adobe Reader Mobile

0
Dynamic Text Watermarks support for documents secured using Adobe LiveCycle Rights Management has been enabled in Adobe Reader mobile application version 10.4 onwards for Android/ iOS devices. On previous versions of Adobe Reader mobile application, opening rights protected documents containing watermarks was … Continue reading

Translating your Forms into other languages

0

Forms created using LiveCycle designer can be easily translated. To translate your form please follow the instructions mentioned in this document
Translating LiveCycle Designer form into other languages
Let me know if you have difficulties in getting this to work.
Some helpful links

http://help.adobe.com/en_US/livecycle/9.0/designerHelp/index.htm?topic=000126

http://blogs.adobe.com/formfeed/2010/02/translating_forms_using_xliff.html


Go to Top