Defining Document Services Custom Components (DSCs)


I’ve written a few custom components in my time working with ADEP but recently came across an excellent summary of what exactly these little (or in some cases large!) pieces of code actually are.  A recent blog post on the Adobe ADEP blog summarised it nicely:

A DSC is a component that can be installed on a Documents Server and introduces new functionality. It stands for Document Service Component. Most product components are DSCs but customers can write their own DSCs to create new integrations or functionality that require a higher level of sophistication than is appropriate with the use of standard integration options (e.g SOAP) or scripting/process maps. They are basically POJOs with nifty enterprise configurations around them that allow enterprise class life cycle, versioning and configuration (e.g. in an enterprise BPM system you don’t necessarily want a new version of a component to alter the way an inflight process is operating, or how a completed process reports audit data…) or even have to bounce the server to change the implementation of the DSC. It is definitely part of the secrete sauce of LiveCycle/ADEP Document Services.

Source: ADEP Blog


The rarest of things – user friendly customer service

It’s a sad state of affairs when I feel compelled to write about a good customer service experience but that’s where we are at the moment (and something that I’ve seen improved hugely with tools such as those Adobe is creating at present but more on that in a later post).  I had a problem with my HTC Desire HD phone (the SIM card cover was a bit wobbly) so decided to set about ordering a replacement.  I logged onto the HTC website dreading what I presumed would be a long and painful process of filling out some long form before waiting days if not weeks for a reply.  What I actually found was an easy to use support system with a variety of different options to go about submitting my query.

Screenshot of the HTC support chat

Clicking on the “Contact Us” button (note to HTC – this was a little difficult to find as I had to scroll through a long page of images to do with the phone before reaching it) popped out a tabbed window with three options: call (with long office hours), email and chat.  I went straight for the chat option and sure enough was instantly through to a human (thankfully not one of those terrible robots that tries to guess the answer to your question with some hopeless FAQ page).  The agent was helpful and got everything sorted for a free replacement SIM card cover in no time at all.

It’s this sort of experience that keeps customers loyal.  I’ve never had an experience as easy as the one I just had with HTC and have already told colleagues and friends about how good they were in resolving my problem and it will certainly make me more likely to buy one of their phones again.

Now if only my bank provided a service like this I could finally stop giving myself a hernia every time I have to ring up…

Posting source code on hosted blogs

The one plugin I loved from hosting my own blog was the excellent SyntaxHighlighter plugin.  After trying to replicate it on I eventually found that it’s already baked in but woefully under documented. Follow the link below for the documentation on how to start using it:

Acrobat Reader Extension limitations

I’ve been doing a piece of work for a customer who wanted a simple form distributed around their organisation for staff to fill in and return.  The only additional requirement was that end users need to be able to save the document whilst filling it in.  Most of my work to date has been using the Adobe LiveCycle product suite and so I naturally turned to Reader Extensions ES2 which would give end users the ability to save documents offline but comes at a rather large premium in terms of licence costs.

Continue reading

Displaying Base64 images in Designer

A recent project required me to write a custom component to merge image data with some text.  This was simple enough in itself but testing the output Base64 image data with PDF files proved a pain.  As a result I made a very simple PDF in Designer which allows you to test your Base64 encoded image strings to see how they’ll look in a PDF document.  The following link will let you download the form which can be opened in designer.  The archive also contains a very basic data schema and test data to get you started.  Just replace the Base64 string in the “sampleData.xml” file with your own string.  Fire up Designer and click the Preview tab to see if the image is displaying properly.


Back from my travels

After a fantastic 2 months travelling SE Asia and Australia I’m finally back in the UK.  Unfortunately my web hosting expired during my travels so I had to move my WordPress database over to (not easy on a slow Vietnamese computer in downtown Saigon!).  A few things seem to have been lost in the transfer such as the plugins I had for displaying code and the theme I was using but other than that it seems fine.  Gone are the days when I used to love hosting my own websites; it’s just so much less hassle to have it hosted and maintained on your behalf!  If I get on with then I’ll restore my domain name to permanently point here (they make you pay for the privilege!).

Just about to embark on some custom component work for a large public sector organisation so expect some more posts on that area soon.

Relative vs Absolute paths for Form fragments

Here’s another gotcha when using LiveCycle Output ES2 that’s had me stumped for a few hours.  I designed a form which used a number of fragments which tested fine within designer.  Once deployed to the server I was always getting blank forms.  A quick check of the logs revealed the following warning:

ALC-OUT-002-058: Cannot retrieve the resource from Repository Path.

A bit of digging around and I hit the a knowledge base article on Adobe’s site.  Basically there’s a “limitation” with the way the form is compiled which means relative paths within fragments and XDPs can cause problems.  The solution is to turn the relative path references (which are inserted by default in Designer) into absolute paths.  Doing this sorted the problem for me but this is something that needs fixing!