cancel
Showing results for 
Search instead for 
Did you mean: 

Generate pdf using Web Dynpro Java API.

Former Member
0 Kudos
190

I created pdf form by using standard "InteractiveFormElement" and it is displaying correctly in browser.

Now there is a requirement to provide url link to the same pdf that is displayed with InteractiveFormElement. To generate pdf, I was doing something the below.

//Copied  XDP file from the srcconfigurationcomponents<package><file>.xdp 
//to srcmimiescomponents<package><file>.xdp

try {
	templateUrl = WDURLGenerator.getWebResourceURL(
                               wdComponentAPI.getDeployableObjectPart(),
			       "CompView_InteractiveForm.xdp");
} catch (WDURLException e) {			
	}
IWDPDFDocumentCreationContext pdfContext = 
   WDPDFDocumentFactory.getDocumentHandler().getDocumentCreationContext();  

pdfContext.setData(
   WDInteractiveFormHelper.getContextDataAsStream(wdContext.nodeDataNode()));

pdfContext.setTemplate(templateUrl);		
IWDPDFDocument pdf = null;
try {
	pdf = pdfContext.execute();			 
} catch (WDPDFDocumentRenderException e) {
			wdComponentAPI.getMessageManager().reportException(
"pdfContext.execute() " + e.getLocalizedMessage(), false);
		}

IWDPDFDocument.execute() is raising exeception "Template used in PDF render

operation is invalid or cannot be found". template url is indeed correct. I checked by

assigning to that url to linkToUrl Element and opening the xdp file.

Please help me to identify the issue. Thank you.

Accepted Solutions (0)

Answers (4)

Answers (4)

krishanu_biswas
Advisor
Advisor
0 Kudos

Hi Ajay,

Let's understand why this problem: you are passing an HTTP url as the template source. This URL then woould be passed on to ADS (which i guess is a different server for you) which will try to access this template and that fails because of authentication issue (most likely) as ADS does not have access to your server.

Solution: There are two ways you can solve this issue:

1. Use pdfContext.setTemplate(byte[] template) method instead of URL. Read the binary on your own and pass the binary itself.

2. Configure a destination on ADS and pass the destination URL instead of HTTP url with the setTemplate method.

Kind Regards,

Krish

krishanu_biswas
Advisor
Advisor
0 Kudos

Hi Ajay,

Let's understand why this problem: you are passing an HTTP url as the template source. This URL then woould be passed on to ADS (which i guess is a different server for you) which will try to access this template and that fails because of authentication issue (most likely) as ADS does not have access to your server.

Solution: There are two ways you can solve this issue:

1. Use pdfContext.setTemplate(byte[] template) method instead of URL. Read the binary on your own and pass the binary itself.

2. Configure a destination on ADS and pass t

Former Member
0 Kudos

Hi Ajay,

Did you find the solution for this issue.

I have the same requirement and facing similar issue.

is there any other way to do that?

amolgupta
Active Contributor
0 Kudos

hi,

if you want to show the PDF file....

the xdp file should not be used, as far as i understand it.

the xdp file opens in adobe designer(where you design the form) not adobe reader.

use the generated pdf file in the first place.

Place the pdf file and then try.

regards,

-ag.

Former Member
0 Kudos

Hi Amol,

Thanks for your reply.

Of course, I'm not trying to display .xdp file. But the pdf generated from the <i>IWDPDFDocument.execute() </i>. But this statement is raising exception!