1 package dinamica; 2 3 import javax.servlet.*; 4 import javax.servlet.http.Cookie ; 5 import java.io.BufferedInputStream ; 6 import java.io.ByteArrayOutputStream ; 7 import java.net.HttpURLConnection ; 8 import java.net.URL ; 9 import com.lowagie.text.*; 10 import com.lowagie.text.pdf.*; 11 12 32 public class AbstractPDFOutput extends GenericOutput 33 { 34 35 38 public void print(GenericTransaction data) throws Throwable 39 { 40 ByteArrayOutputStream buf = new ByteArrayOutputStream (); 41 createPDF(data, buf); 42 getResponse().setContentLength(buf.size()); 43 ServletOutputStream out = getResponse().getOutputStream(); 44 buf.writeTo(out); 45 out.close(); 46 } 47 48 protected void createPDF(GenericTransaction data, ByteArrayOutputStream buf) throws Throwable 49 { 50 51 Document doc = new Document(); 53 PdfWriter docWriter = PdfWriter.getInstance(doc, buf); 54 55 HeaderFooter header = new HeaderFooter(new Phrase(getHeader()), false); 57 header.setBorder(Rectangle.BOTTOM); 58 header.setAlignment(Rectangle.ALIGN_CENTER); 59 doc.setHeader(header); 60 61 HeaderFooter footer = new HeaderFooter(new Phrase(getFooter()), true); 63 footer.setBorder(Rectangle.TOP); 64 footer.setAlignment(Rectangle.ALIGN_RIGHT); 65 doc.setFooter(footer); 66 67 doc.setPageSize(PageSize.LETTER); 69 70 doc.open(); 71 72 Paragraph t = new Paragraph(getReportTitle(),new Font(Font.HELVETICA, 18f)); 74 t.setAlignment(Rectangle.ALIGN_CENTER); 75 doc.add(t); 76 77 Paragraph p = new Paragraph("Hello World"); 79 p.setAlignment(Rectangle.ALIGN_CENTER); 80 doc.add(p); 81 82 doc.close(); 83 docWriter.close(); 84 85 } 86 87 92 protected String getHeader() 93 { 94 95 return getPDFConfigValue("pdf-header"); 96 97 } 98 99 104 protected String getFooter() 105 { 106 return getPDFConfigValue("pdf-footer") + " "; 107 } 108 109 116 protected String getReportTitle() 117 { 118 return getPDFConfigValue("pdf-title"); 119 } 120 121 127 protected String getPDFConfigValue(String param) 128 { 129 String value = null; 130 try 131 { 132 value = getConfig().getConfigValue(param); 133 if (value==null || value.trim().equals("")) 134 { 135 value = getContext().getInitParameter(param); 136 } 137 } 138 catch (Throwable e) 139 { 140 value = getContext().getInitParameter(param); 141 if (value==null) 142 value = ""; 143 } 144 return value; 145 } 146 147 157 protected byte[] getImage(String url, String sessionID, boolean logStdout) throws Throwable 158 { 159 160 HttpURLConnection urlc = null; 161 BufferedInputStream bin = null; 162 final int bufferSize = 10240; 163 byte[] buffer = null; 164 URL page = new URL (url); 165 ByteArrayOutputStream bout = new ByteArrayOutputStream (); 166 167 if (logStdout) 168 System.err.println("Waiting for reply...:" + url); 169 170 try 171 { 172 urlc = (HttpURLConnection )page.openConnection(); 173 urlc.setUseCaches(false); 174 urlc.addRequestProperty("Cookie", "JSESSIONID=" + sessionID); 175 176 if (logStdout) 177 { 178 System.err.println("Content-type = " + urlc.getContentType()); 179 System.err.println("Content-length = " + urlc.getContentLength()); 180 System.err.println("Response-code = " + urlc.getResponseCode()); 181 System.err.println("Response-message = " + urlc.getResponseMessage()); 182 } 183 184 int retCode = urlc.getResponseCode(); 185 String retMsg = urlc.getResponseMessage(); 186 if (retCode>=400) 187 throw new Throwable ("HTTP Error: " + retCode + " - " + retMsg + " - URL:" + url); 188 189 int size = urlc.getContentLength(); 190 if (size > 0) 191 buffer = new byte[size]; 192 else 193 buffer = new byte[bufferSize]; 194 195 bin = new BufferedInputStream (urlc.getInputStream(), buffer.length); 196 197 int bytesRead = 0; 198 do 199 { 200 bytesRead = bin.read(buffer); 201 if (bytesRead > 0) 202 bout.write(buffer, 0, bytesRead); 203 } while (bytesRead != -1); 204 205 if (logStdout) 206 { 207 System.err.println("Connection closed."); 208 } 209 210 return bout.toByteArray(); 211 212 } 213 catch (Throwable e) 214 { 215 throw e; 216 } 217 finally 218 { 219 if (bin != null) 220 bin.close(); 221 222 if (urlc != null) 223 urlc.disconnect(); 224 } 225 226 } 227 228 241 protected String getSessionID() 242 { 243 String value = null; 244 Cookie c[] = getRequest().getCookies(); 245 for (int i=0;i<c.length;i++) 246 { 247 if (c[i].getName().equals("JSESSIONID")) 248 { 249 value = c[i].getValue(); 250 break; 251 } 252 } 253 return value; 254 } 255 256 266 protected byte[] getImage(String url, boolean logStdout) throws Throwable 267 { 268 String sID = getSessionID(); 269 return getImage(url, sID, logStdout); 270 } 271 272 } 273 | Popular Tags |