Harry
Harry

Reputation: 548

iText Add Image to PDF in a web application

I'm posting this for a friend. He is not able to access Stackoverflow from work (Third Party Cookies Appear To Be Disabled) :)

Ok here goes:

They have a Web application (JSP/Servlets/Custom Framework) and he is trying to generate a PDF on the fly. Now he wants to add images to that PDF. But it ain't working. Here is the piece of code:

Image image = Image.getInstance("../graphics/caution_sign.gif");

The graphics folder is on the parent project (webcontent/graphics/) and this is how they access the images from that folder in all other places (in the JSPs).

Now I read on another post that we need to use the real absolute path to access the Images. But the problem here is this is a POJO and there is no access to the servletContext in this class.

The PDF is generated fine, but the Image does not show and the error is:

C:\Program Files\IBM\SDP\runtimes\base_v7\profiles\was70profile1\..\graphics\caution_sign.gif (The system cannot find the path specified.)

It is trying to look for the "Graphics" folder in a different location instead of looking within the webcontent folder.

Hope my question is clear and would appreciate a lot if someone can help with this and help in resolving this issue

Thanks so much

Harish

Upvotes: 2

Views: 8253

Answers (3)

Chennu
Chennu

Reputation: 1

Small change from the previous solutions :

Step1: Below code will return the class path including class file name

URL classURL = getClass().getProtectionDomain().getCodeSource().getLocation();

Step2: Get the base path by removing class name

String basePath = classURL.getPath().replaceAll("<classname>.class","");

Step3: Navigate to the image location based on your project

Image headerLogo = Image.getInstance(basePath+"../../../../../../../images/header_logo.gif");

Upvotes: -1

Sana
Sana

Reputation: 118

Following code can be used to access image path inside a java class.

URL imageUrl = getClass().getProtectionDomain().getCodeSource().getLocation();
Image img=Image.getInstance(imageurl+"../../../some/images/pic.gif");    

Upvotes: 1

Harry
Harry

Reputation: 548

He was able to solve it using this piece of code. Hope this helps someone else.

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();

String path = classLoader.getResource("/graphics/caution_sign.gif").getPath();

Image image = Image.getInstance(path);

Thanks

Harish

Upvotes: 1

Related Questions