In this tutorial, we will provide a Java Servlet that can accept a user uploaded Tiff Image file and convert this Tiff image to a PDF and render it back to the browser from where the request was placed.In order to write this servlet code, we would need a jsp page that can accept a file uploaded by the user. Once the uploaded image is submitted to the server, we will have to write some code at the servlet to accept the incoming file and use iText to convert this Tiff image to PDF. This PDF can be streamed back to the browser, which will then open the PDF using Adobe PDF plugins. This does not look that complex,if you know a bit of servlet programming. Even if you are beginner, don't worry. This tutorial can help you to understand and get going quite easily. Now, for this tutorial, you can use any IDE of your choice. But, you would need the following JAR files as listed below;
itextpdf-5.1.0 - iText to write the PDF file com.oreilly.servlet package - We need this package to process the uploaded file at the server
First, let us construct a simple JSP file which will accept a user uploaded Tiff image through a FORM. The JSP code (index.jsp) is provided below;
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>My Upload Page</title>
</head>
<body>
<h1>Upload a Tiff Image which will be Converted to PDF File</h1>
<form action="Tiff2Pdf" method="post" enctype="multipart/form-data" name="productForm" id="productForm">
<input type="file" name="file" id="file">
<input type="submit" name="Submit" value="Submit">
</form>
</body>
</html>
If you look at the code above, we create a FORM that will post the uploaded image to a servlet "Tiff2Pdf". The form contains a file placeholder to accept a user uploaded file. It also contains a submit button to submit the uploaded image to the server. A screenshot of how this form will look on the browser is provided below;
Tiff to PDF conversion through Servlet |
package com.convertImage;
import java.io.IOException;
import java.io.OutputStream; // to write the PDF
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.itextpdf.text.pdf.RandomAccessFileOrArray;//hold user uploaded Tiff File
import com.itextpdf.text.pdf.codec.TiffImage; // Read Tiff file for Processing
import com.itextpdf.text.Image; //Extract images from Tiff File
import com.itextpdf.text.pdf.PdfWriter; // write PDF
import com.itextpdf.text.Document;//Logical PDF object
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.DocumentException;
import com.oreilly.servlet.MultipartRequest;//To save uploaded Tiff file for processing
public class Tiff2Pdf extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/pdf");
OutputStream out=response.getOutputStream();
try {
//Save uploaded Tiff file to server
MultipartRequest myrequest=new MultipartRequest(request,"c:\\test");
//Create Document object
Document document = new Document();
// Create PdfWriter instance to response output stream
PdfWriter.getInstance(document, out);
//Open Document Object
document.open();
document.add(new Paragraph("Welcome, Your Tiff Image Converted to PDF, Save the File"));
document.add(new Paragraph("PDF Produced by Converting Tiff to PDF as Servlet"));
//Get uploaded image path in string variable
String FilePath=myrequest.getFile("file").getAbsolutePath();
//Start readig the Tiff image
RandomAccessFileOrArray myTiffFile=new RandomAccessFileOrArray(FilePath);
//Get number of pages
int numberOfPages=TiffImage.getNumberOfPages(myTiffFile);
//Extract each page and add to Document
for(int i=1;i<=numberOfPages;i++){
Image tempImage=TiffImage.getTiffImage(myTiffFile, i);
document.add(tempImage);
}
document.close();
} catch (DocumentException exc){
throw new IOException(exc.getMessage());
}
finally {
out.close(); //Return PDF back to browser
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}//
}
All you have to do now is to deploy the servlet on your favorite web server (I used Glassfish Server 3.1) and then run the JSP file. If you have done all the configuration correctly, you will get a Tiff image converted to PDF and viewed on your browser. We will see a working demonstration of this code in the next tutorial. We will also discuss some exceptions you may get while executing this code, and how to fix them.
This comment has been removed by a blog administrator.
ReplyDeletei am working on eclipse ...server-tomcat
ReplyDeleteservlet configuration is not supported ..shows a lot of error for the above code pls help
the above code is encountering many errors in tomcat server m working on eclipse
ReplyDeleteanything else i have to do while dealing with the servlet please help
I want to this pdf to only save at the specified location without user notification
ReplyDeleteHow to Convert PDF TO Tiff
ReplyDelete