/*
* $Id$
*
* This code is part of the 'iText Tutorial'.
* You can find the complete tutorial at the following address:
* http://itextdocs.lowagie.com/tutorial/v
*
* This code is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* itext-questions@lists.sourceforge.net
*/
package com.lowagie.examples.general.webapp;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.PdfWriter;
/**
* Explains how to print silently via Servlet/Browser.
* @author Heiner Jostkleigrewe, Heiner.Jostkleigrewe@gt-net.de
*/
public class SilentPrintServlet extends HttpServlet {
private static final long serialVersionUID = -3250788071256174348L;
/** a possible status */
public static final int ACT_INIT = 0;
/** a possible status */
public static final int ACT_REPORT_1 = 1;
/**
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doGet(HttpServletRequest requ, HttpServletResponse resp)
throws ServletException, IOException {
doWork(requ, resp);
}
/**
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doPost(HttpServletRequest requ, HttpServletResponse resp)
throws ServletException, IOException {
doWork(requ, resp);
}
/**
* The actual business logic.
*
* @param requ the request object
* @param resp the response object
* @throws IOException
*/
public void doWork(HttpServletRequest requ, HttpServletResponse resp)
throws IOException {
ServletOutputStream out = resp.getOutputStream();
// what did the user request?
int action = ACT_INIT;
int sub = ACT_INIT;
try {
action = Integer.parseInt(requ.getParameter("action"));
sub = Integer.parseInt(requ.getParameter("sub"));
} catch (Exception e) {
}
switch (action) {
case ACT_INIT: {
htmlHeader(out, requ, resp);
formular(out, requ, resp, sub);
break;
}
case ACT_REPORT_1: {
Document document = new Document();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
PdfWriter writer = PdfWriter.getInstance(document, baos);
document.open();
if (requ.getParameter("preview") == null)
writer.addJavaScript("this.print(false);", false);
document.add(new Chunk("Silent Auto Print"));
document.close();
} catch (DocumentException e) {
e.printStackTrace();
}
resp.setContentType("application/pdf");
resp.setContentLength(baos.size());
baos.writeTo(out);
out.flush();
break;
}
}
}
private void htmlHeader(ServletOutputStream out, HttpServletRequest requ,
HttpServletResponse resp) throws IOException {
resp.setContentType("text/html; charset=ISO-8859-1");
resp.setHeader("Cache-Control", "no-cache");
out.println("<html>");
out.println("<head>");
out
.println("<meta http-equiv='Content-Type' content='text/html;charset=iso-8859-1'>");
out.println("<meta http-equiv='expires' content='0'>");
out.println("<meta http-equiv='cache-control' content='no-cache'>");
out.println("<meta http-equiv='pragma' content='no-cache'>");
out.println("</head>");
out.println("<body>");
}
private void formular(ServletOutputStream out, HttpServletRequest requ,
HttpServletResponse resp, int sub) throws IOException {
out.print("<form method='post' action='");
out.print(requ.getRequestURI());
out.print("?action=");
out.print(ACT_INIT);
out.print("&sub=");
out.print(ACT_REPORT_1);
out.println("'>");
out.print("<input type='checkbox' name='preview' value='Y'");
if (requ.getParameter("preview") != null)
out.print(" checked ");
out.println(">preview<br>");
out.println("<input type=submit value='Report 1'>");
out.println("</form>");
if (sub != ACT_INIT) {
if (requ.getParameter("preview") != null) {
out.println("<script language='JavaScript'>");
out.print("w = window.open(\"");
out.print(requ.getRequestURI());
out.print("?action=");
out.print(sub);
out
.print("&preview=Y\", \"Printing\", \"width=800,height=450,scrollbars,menubar=yes,resizable=yes\");");
out.println("</script>");
} else {
out.print("<iframe src='");
out.print(requ.getRequestURI());
out.print("?action=");
out.print(sub);
out.println("' width='10' height='10' name='pdf_box'>");
}
}
out.println("</body>");
out.println("</html>");
}
}