Skip navigation
AnandaKumar B
Currently Being Moderated

How to submit PDF form from my local hard disk(offline submission)?

Jan 7, 2010 11:56 PM

Hi All,

       Earlier I used to submit PDF form using LC workspace to a LC workbench Process , but now I had a requirement to submit the PDF without workspace. I need to open a local PDF and if I click the submit button then it should invoke the LC workbench Process via Soap end point. Please can anybody help me out!

 

I will greatly appreciate any help on this issue

 
Replies
  • Currently Being Moderated
    Jan 10, 2010 5:33 AM   in reply to AnandaKumar B

    Here are the two suggestions of which you could consider for offline submission.

     

    1. Email Submit (Simple way)

        - Place an email submit in the form and submit to an email account

        - Configure an email endpoint for your process

     

    2. HTTP Submit (a little Complicated)

        - Submit your form data to a servlet or a .net page

        - Invoke the process using its soap endpoint from servlet/.net code with the APIs provided

     

     

    Nith

     
    |
    Mark as:
  • Currently Being Moderated
    Jan 11, 2010 9:09 PM   in reply to AnandaKumar B

    Option 1 (Using email submit button)

     

    On your process:

    Create an email endpoint and set the properties. Configure the filters appropriately (See livedocs for any help)

     

    In the form:

    You could place an email submit button inside the form and the form could be saved in local hard disk.

    Once you filled the form and click on the submit button (i.e the email submit button), the email client will open with the form data attached with it.

    The email client will also prepopulated with the email address to send and the subject too.

    On clicking of the send button, the data will be posted to the designated email server.

     

    Now your process will be invoked using the email endpoint created with the supplied data

     

    Clear?

     

     

     

    Option 2 (Using a Servlet or a .Net application)

     

    You can place a HTTP Submit button in the form.

    Mention the Servlet or the .Net page location

    Now on click of the submit button, the form will be posted to the java/.net server.

    Adobe has provided APIs to invoke your process using Java/.net etc. From there you could proceed to invoke the process.

     

     

    Since you are new to LiveCycle, I recommend the first option.

     

    Nith.

     
    |
    Mark as:
  • Currently Being Moderated
    Jan 11, 2010 9:20 PM   in reply to $Nith$

    You can further refer to the following section in the livedocs for more help.

     

    http://livedocs.adobe.com/livecycle/8.2/programLC/programmer/help/0002 85.html#1548279

     

     

    Nith

     
    |
    Mark as:
  • Currently Being Moderated
    Calculating status...
    Jan 12, 2010 3:30 AM   in reply to $Nith$

    Hi All,

    This is my first post in this forum.

    I am also looking for same solution ,that is how to submit a PDF form  offline via soap end point to a LC workbench process without using any servlet or jsp.

     

    I have gone through the links  http://livedocs.adobe.com/livecycle/8.2/programLC/programmer/help/0002 85.html#15 48279   provided by Nith.

    This link is very usefull . But there is one issue regarding creating  XFAForm variable . Variable type XFAForm is deprecated in LiveCycle ES2 version 9.0.

    Now in LiveCycle ES2 version 9.0  , I do not know any alternative for XFAForm variable .

    Please help me ...........

     

    Deba......

     
    |
    Mark as:
  • Currently Being Moderated
    Jan 12, 2010 9:08 PM   in reply to _deba.s

    I hope this can be surely done; however I do not have time to investigate on this now.

    I will give you some ideas to proceed; just take a try and see the result.

     

    1. On click of a button in the form, Export the form data into xml or string format

    2. Invoke the web service (SOAP endpoint of your process to be invoked) through javascript

          2.1   You need to pass the data to your process as binary stream (in javascript it is named as readStream)

                2.1.1 In case of strings, you can convert them into binary data as readStream(stringVar)

     

    See the attached Javascript reference manual on page 252 for SOAP related clarifications

     

    Nith

    Attachments:
     
    |
    Mark as:
  • Currently Being Moderated
    Jan 19, 2010 3:42 AM   in reply to AnandaKumar B

    Finally I have done a sample to achieve this requirement.

     

    Here are the summary of steps what I did.

     

    1. Created a simple event (includes a string data to carry as event data/message)

     

    2. Created a process (Proc1) on which a string variable is created (and parked as Input); The process is short lived

     

    3. Created another long-lived process (Proc2) with the newly created event as startpoint event.

     

    4. Created a form which invokes the Proc1 using SOAP (i.e data connection) and passing the data      (see the attached form which does this logic)

     

     

    If needed, I will share my processes & events created.

     

    Nith

    Attachments:
     
    |
    Mark as:
  • Currently Being Moderated
    Jan 19, 2010 4:01 AM   in reply to AnandaKumar B

    PFA resources.

     

    Nith

    Attachments:
     
    |
    Mark as:
  • Currently Being Moderated
    Jan 22, 2010 6:10 AM   in reply to $Nith$

    hi Nith,

     

    i tried to use your javascript to send the xml from pdf to soap endpoint in my process, but it does not work.

    what i the meaning of the events you used in your process?

     

    E

     
    |
    Mark as:
  • Currently Being Moderated
    Jan 23, 2010 9:43 PM   in reply to lajka3

    Our aim is to invoke a human centric process - a Long-Lived process.

    We cannot make synchronous calls to a long-lived process.

     

    I attempted to write a short-lived which invokes the actual long lived process as sub process - which was also unsuccessful.

    Hence I thought about events concept.

     

    I created a short-lived process which just contains a simple event(throw) and same event is placed as startpoint of the long-lived process.

     

    Make sure to invoke the short-lived process's soap endpoint.

     

    Regards,

    Nith

     
    |
    Mark as:
  • Currently Being Moderated
    Jan 25, 2010 5:22 AM   in reply to $Nith$

    Dear Nith,

     

    sorry to bother you again. i imported your processes but i am getting an error: event not found. when clicking on event properties. so i tried to mimic your processes by creating the same you did:

     

    1. when creating the short lived process i have to choose the event type. i did take asynchronous/content created. no idea if this is correct.

    2. when creating the long lived process the question is how to link this event to the event from the short lived process

    3. when setting up the the PDF form i chosse the assynchronous link to the short lived process:

     

    <wsdlConnection name="DataConnection3" dataDescription="DataConnection3invoke_AsyncRequestDD">
          <soapAddress>http://10.100.102.73:8080/soap/services/OznamPsa/P2</soapAddress>
          <wsdlAddress>http://10.100.102.73:8080/soap/services/OznamPsa/P2?wsdl&lc_version=9. 0.0&version=1.0</wsdlAddress>
          <soapAction>invoke_Async..9.0.0</soapAction>
          <operation input="invoke_AsyncRequest" output="invoke_AsyncResponse">invoke_Async</operation>
          <?templateDesigner fileDigest shaHash="2zWQFkLYI4hAMY+ki9Jd8D8uE6w="?></wsdlConnection>

     

    but i also had problems with the synchronous...

     

     

    when recording the process activity i get no recording to play back after the tests.

     

    any more hints for me?

    Attachments:
     
    |
    Mark as:
  • Currently Being Moderated
    Jan 25, 2010 8:53 PM   in reply to lajka3

    I created an archive for you.

     

    The archive contains two processes:

    SOAP_Invocation_Test          - is the short-lived process

    SOAP_Usage                       - is the long lived process

     

    and one event:

    SOAP_Test

     

    and one PDF form:

    saveas.pdf

     

     

    After importing the archive do the following changes:

     

    1. open the SOAP_Usage process and edit the AssignTask operation

    2. Open the attached PDF file (Directly Invoke Workflow.pdf) in livecycle designer and update the data connection wsdl .

    3. Reader extend the modified PDF file

     

    Cheers,

    Nith

    Attachments:
     
    |
    Mark as:
  • Currently Being Moderated
    Jan 26, 2010 4:31 AM   in reply to $Nith$

    thank you Nith, now i just have to figure out how to edit an v8 aplication on v9 SE2 server and workbench. i will let you know when i succeed.

    E

     
    |
    Mark as:
  • Currently Being Moderated
    Jan 26, 2010 7:04 AM   in reply to $Nith$

    hi Nith,

     

    now it works thank you .

     

    last question: what pdf client do you use?

     

    adobe acrobat 9 pro - trial version: works fine

    adobe reader 9.3.0 - does not send at all (i monitored it with wireshark)

     

    so basicaly if i have to develop an aplication that should recieve messages from various pdf clients i cant relay on that people using it will all have the pro version...

     

    E

     
    |
    Mark as:
  • Currently Being Moderated
    Jan 26, 2010 8:23 PM   in reply to lajka3

    Did you reader-extend the form after editing?

     

     

    Nith

     
    |
    Mark as:
  • Currently Being Moderated
    Jan 27, 2010 3:41 AM   in reply to $Nith$

    according to this:

     

    http://cookbooks.adobe.com/post_Using_LiveCycle_Forms_in_Acrobat_and_R eader-16518.html

     

    i would need the option 4 livecycle reader extensions SE, which i dont have and cant download.

    i am not sure if my company will purchase this so maybe i will have to search another way to submit the form.

     

    E

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 14, 2010 11:08 PM   in reply to lajka3

    Nith,

    I followed your steps but I am facing one issue...after clicking on submit button. I am getting worning message and it says that

    Couldn't post data to ".

     

    /Srujan

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 14, 2010 11:29 PM   in reply to Srujanm

    Can you send your form to nith.mof@gmail.com  ?

     

    I will try to look into the issue.

     

    Nith

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 15, 2010 12:01 AM   in reply to $Nith$

    hi nith,

    i hve sent mail ti ur id...reply ASAP

     
    |
    Mark as:
  • Currently Being Moderated
    Mar 1, 2011 1:48 PM   in reply to $Nith$

    Hi, thanks for providing the example.  I tried it as is, and it worked.

     

    But then, I tried to modify it a little but, and I got this message in the server log:

    [3/1/11 15:20:30:520] 00000145 LocalExceptio E   CNTR0020E: EJB threw an unexpected (non-declared) exception during invocation of method "doRequiresNew" on bean "BeanId(LiveCycleES2#adobe-dscf.jar#EjbTransactionCMTAdapter, null)". Exception data: org.w3c.dom.DOMException: INVALID_CHARACTER_ERR: An invalid or illegal XML character is specified.

     

    What I was trying to do, was

    at the "SOAP Invocation" process, I would like to put the "User"'s login ID into the Event data;

    such that in the "SOAP Usage" process,  I can extract the Login ID, then assign it to a process variable,

    and at the "Assign Task to User" step, I can use XPath (of the process variable) for the "Initital User Selection",

    (instead of hard-coding the user ID).

     

    But somehow it didn't work.

    What's the right way to pass the user's Login ID onto the target process?

     

    thanks

     
    |
    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points