Writing a Servlet to View a Document in a Web Browser

This tech tip demonstrates how to write a simple servlet that allows any document supported by the RasterMaster imaging SDK library to be viewed in a standard Web browser. The documents are converted in real time to PNG images.

package com.snowbound.techtip;

import java.io.IOException;

import javax.servlet.ServletConfig;

import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import Snow.Snowbnd;

public class Document2PNGServlet extends HttpServlet


private final static int PNG_FORMAT = 43;

private final static String IMAGE_DIRECTORY = "c:/images/";

public void service(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException


ServletConfig config = getServletConfig();

ServletContext application = config.getServletContext();

Snowbnd snow = new Snowbnd();

// get the page number to convert from the page parameter

int pageIndex = Integer.parseInt(request.getParameter("page"));

// get the filename to convert from the filename parameter

String filename = IMAGE_DIRECTORY + request.getParameter("filename");

// create a temporary byte array that is at least as big as the expected output size

byte[] tmpOutputBytes = new byte[15000000];

// decompress the specified page

snow.IMG_decompress_bitmap(filename, pageIndex);

// write out the page to a byte array in PNG format

int outputSize = snow.IMG_save_bitmap(tmpOutputBytes, PNG_FORMAT);

// copy only the data portion to our output array

byte[] outputBytes = new byte[outputSize];

System.arraycopy(tmpOutputBytes, 0, outputBytes, 0, outputSize);

// set the content type of the image data to be sent to the browser



// send the bytes to the response object

sendBytes(outputBytes, response);



* This method will send the contents of the byte array

* to the servlet response output stream.


* @param bytes the output byte array

* @param response the HttpServletResponse object to write to

* @throws IOException


protected void sendBytes(byte[] bytes, HttpServletResponse response)

throws IOException


ServletOutputStream servletoutputstream = response.getOutputStream();





Learn More
In addition to our Tech Tips section, our document and image Solutions Section provides business application and industry-specific examples including image conversion and web viewing.