001package org.kuali.ole.deliver.batch; 002 003 004import com.itextpdf.text.*; 005import com.itextpdf.text.Font; 006import com.itextpdf.text.pdf.BaseFont; 007import com.itextpdf.text.pdf.PdfPCell; 008import com.itextpdf.text.pdf.PdfPTable; 009import com.itextpdf.text.pdf.PdfWriter; 010import org.apache.log4j.Logger; 011import org.kuali.ole.OLEConstants; 012import org.kuali.ole.deliver.bo.OleCirculationDeskDetail; 013import org.kuali.ole.deliver.bo.OleDeliverRequestBo; 014import org.kuali.ole.deliver.processor.LoanProcessor; 015import org.kuali.rice.core.api.config.property.ConfigContext; 016import org.kuali.rice.krad.service.KRADServiceLocator; 017import org.springframework.core.io.ClassPathResource; 018import org.springframework.core.io.Resource; 019 020import javax.servlet.http.HttpServletResponse; 021import java.io.ByteArrayOutputStream; 022import java.io.FileOutputStream; 023import java.io.OutputStream; 024import java.util.HashMap; 025import java.util.Map; 026 027/** 028 * Created with IntelliJ IDEA. 029 * User: ? 030 * Date: 11/23/12 031 * Time: 5:24 PM 032 * To change this template use File | Settings | File Templates. 033 */ 034public class OleDeliverNoticeService { 035 private LoanProcessor loanProcessor = new LoanProcessor(); 036 private static final Logger LOG = Logger.getLogger(OleShelvingLagTime.class); 037 038 public LoanProcessor getLoanProcessor() { 039 return loanProcessor; 040 } 041 042 public void setLoanProcessor(LoanProcessor loanProcessor) { 043 this.loanProcessor = loanProcessor; 044 } 045 046 047 public Font getArialFont(){ 048 com.itextpdf.text.Font font = FontFactory.getFont(getFontFilePath("org/kuali/ole/deliver/batch/fonts/arial.ttf"), BaseFont.IDENTITY_H,10); 049 return font; 050 } 051 052 public String getFontFilePath(String classpathRelativePath) { 053 try { 054 Resource rsrc = new ClassPathResource(classpathRelativePath); 055 return rsrc.getFile().getAbsolutePath(); 056 } catch(Exception e){ 057 LOG.error("Error : while accessing font file "+e); 058 } 059 return null; 060 } 061 062 public Font getBoldFont(){ 063 return FontFactory.getFont(FontFactory.TIMES_ROMAN, 15, Font.BOLD); 064 } 065 066 067 private PdfPCell getPdfPCellInCenter(String chunk) { 068 PdfPCell pdfPCell = new PdfPCell(new Paragraph(new Chunk(chunk,getArialFont()))); 069 pdfPCell.setBorder(pdfPCell.NO_BORDER); 070 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_LEFT); 071 return pdfPCell; 072 } 073 074 private PdfPCell getPdfPCellInCenter(String chunk,Font font) { 075 PdfPCell pdfPCell = new PdfPCell(new Paragraph(new Chunk(chunk,font))); 076 pdfPCell.setBorder(pdfPCell.NO_BORDER); 077 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_LEFT); 078 return pdfPCell; 079 } 080 081 private PdfPCell getPdfPCellNewLine() { 082 PdfPCell pdfPCell = new PdfPCell(new Paragraph(Chunk.NEWLINE)); 083 pdfPCell.setBorder(pdfPCell.NO_BORDER); 084 return pdfPCell; 085 } 086 087 private Paragraph getPdfParagraphNewLine() { 088 Paragraph paragraph = new Paragraph(new Paragraph(Chunk.NEWLINE)); 089 return paragraph; 090 } 091 092 public boolean createPdf(OleNoticeBo noticeBo) { 093 boolean result = false; 094 String directory = getLoanProcessor().getParameter("PDF_LOCATION"); 095 OutputStream outputStream = null; 096 String fileName = noticeBo.getNoticeName() + "/" + noticeBo.getItemId(); 097 try { 098 Document document = new Document(PageSize.A4); 099 outputStream = new FileOutputStream(directory + "/" + fileName + ".pdf"); 100 PdfWriter writer = PdfWriter.getInstance(document, outputStream); 101 Font boldFont = FontFactory.getFont("Times-Roman", 15, Font.BOLD); 102 document.open(); 103 document.newPage(); 104 105 //document.setHeader(new HeaderFooter(new Phrase(fileName), new Phrase("Footer"))); 106 107 //Circulation Desk 108 Paragraph paraGraph = new Paragraph(); 109 paraGraph.add(new Chunk(noticeBo.getNoticeName(), boldFont)); 110 paraGraph.add(Chunk.NEWLINE); 111 document.add(paraGraph); 112 PdfPTable pdfTable = new PdfPTable(3); 113 PdfPCell pdfPCell = new PdfPCell(new Paragraph("Circulation Location / Library Name")); 114 pdfPCell.setBorder(pdfPCell.NO_BORDER); 115 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_JUSTIFIED); 116 pdfTable.addCell(pdfPCell); 117 pdfPCell = new PdfPCell(new Paragraph(":")); 118 pdfPCell.setBorder(pdfPCell.NO_BORDER); 119 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_LEFT); 120 pdfTable.addCell(pdfPCell); 121 pdfPCell = new PdfPCell(new Paragraph(new Chunk(noticeBo.getCirculationDeskName()))); 122 pdfPCell.setBorder(pdfPCell.NO_BORDER); 123 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_JUSTIFIED); 124 pdfTable.addCell(pdfPCell); 125 pdfPCell = new PdfPCell(new Paragraph(new Chunk("Address"))); 126 pdfPCell.setBorder(pdfPCell.NO_BORDER); 127 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_JUSTIFIED); 128 pdfTable.addCell(pdfPCell); 129 pdfPCell = new PdfPCell(new Paragraph(":")); 130 pdfPCell.setBorder(pdfPCell.NO_BORDER); 131 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_LEFT); 132 pdfTable.addCell(pdfPCell); 133 pdfPCell = new PdfPCell(new Paragraph(new Chunk(noticeBo.getCirculationDeskAddress()))); 134 pdfPCell.setBorder(pdfPCell.NO_BORDER); 135 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_JUSTIFIED); 136 pdfTable.addCell(pdfPCell); 137 pdfPCell = new PdfPCell(new Paragraph(new Chunk("Email"))); 138 pdfPCell.setBorder(pdfPCell.NO_BORDER); 139 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_JUSTIFIED); 140 pdfTable.addCell(pdfPCell); 141 pdfPCell = new PdfPCell(new Paragraph(":")); 142 pdfPCell.setBorder(pdfPCell.NO_BORDER); 143 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_LEFT); 144 pdfTable.addCell(pdfPCell); 145 pdfPCell = new PdfPCell(new Paragraph(new Chunk(noticeBo.getCirculationDeskEmailAddress()))); 146 pdfPCell.setBorder(pdfPCell.NO_BORDER); 147 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_JUSTIFIED); 148 pdfTable.addCell(pdfPCell); 149 pdfPCell = new PdfPCell(new Paragraph(new Chunk("Phone #"))); 150 pdfPCell.setBorder(pdfPCell.NO_BORDER); 151 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_JUSTIFIED); 152 pdfTable.addCell(pdfPCell); 153 pdfPCell = new PdfPCell(new Paragraph(":")); 154 pdfPCell.setBorder(pdfPCell.NO_BORDER); 155 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_LEFT); 156 pdfTable.addCell(pdfPCell); 157 pdfPCell = new PdfPCell(new Paragraph(new Chunk(noticeBo.getCirculationDeskPhoneNumber()))); 158 pdfPCell.setBorder(pdfPCell.NO_BORDER); 159 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_JUSTIFIED); 160 pdfTable.addCell(pdfPCell); 161 document.add(pdfTable); 162 paraGraph = new Paragraph(); 163 paraGraph.add(Chunk.NEWLINE); 164 document.add(paraGraph); 165 166 //Patron 167 paraGraph = new Paragraph(); 168 paraGraph.add(new Chunk("Addressee", boldFont)); 169 paraGraph.add(Chunk.NEWLINE); 170 document.add(paraGraph); 171 pdfTable = new PdfPTable(3); 172 173 pdfTable.addCell(getPdfPCellInJustified("Borrower Name")); 174 pdfTable.addCell(getPdfPCellInLeft(":")); 175 pdfTable.addCell(getPdfPCellInJustified(noticeBo.getPatronName() != null ? noticeBo.getPatronName() : "")); 176 177 pdfTable.addCell(getPdfPCellInJustified("Address")); 178 pdfTable.addCell(getPdfPCellInLeft(":")); 179 pdfTable.addCell(getPdfPCellInJustified((noticeBo.getPatronAddress() != null ? noticeBo.getPatronAddress() : ""))); 180 181 pdfTable.addCell(getPdfPCellInJustified("Email")); 182 pdfTable.addCell(getPdfPCellInLeft(":")); 183 pdfTable.addCell(getPdfPCellInJustified((noticeBo.getPatronEmailAddress() != null ? noticeBo.getPatronEmailAddress() : ""))); 184 185 pdfTable.addCell(getPdfPCellInJustified("Phone #")); 186 pdfTable.addCell(getPdfPCellInLeft(":")); 187 pdfTable.addCell(getPdfPCellInJustified((noticeBo.getPatronPhoneNumber() != null ? noticeBo.getPatronPhoneNumber() : ""))); 188 189 document.add(pdfTable); 190 paraGraph = new Paragraph(); 191 paraGraph.add(Chunk.NEWLINE); 192 document.add(paraGraph); 193 194 //Notice Type 195 paraGraph = new Paragraph(); 196 paraGraph.add(new Chunk(noticeBo.getNoticeName(), boldFont)); 197 paraGraph.setAlignment(Element.ALIGN_CENTER); 198 paraGraph.add(Chunk.NEWLINE); 199 document.add(paraGraph); 200 201 202 //Notice-specific text 203 paraGraph = new Paragraph(); 204 paraGraph.add(new Chunk(noticeBo.getNoticeSpecificContent(), boldFont)); 205 paraGraph.setAlignment(Element.ALIGN_CENTER); 206 paraGraph.add(Chunk.NEWLINE); 207 document.add(paraGraph); 208 //Title/item information 209 paraGraph = new Paragraph(); 210 paraGraph.add(new Chunk("Title/item information", boldFont)); 211 paraGraph.add(Chunk.NEWLINE); 212 document.add(paraGraph); 213 pdfTable = new PdfPTable(3); 214 215 216 pdfTable.addCell(getPdfPCellInJustified("Title")); 217 pdfTable.addCell(getPdfPCellInLeft(":")); 218 pdfTable.addCell(getPdfPCellInJustified((noticeBo.getTitle() == null ? "" : noticeBo.getTitle()))); 219 220 pdfTable.addCell(getPdfPCellInJustified("Author")); 221 pdfTable.addCell(getPdfPCellInLeft(":")); 222 pdfTable.addCell(getPdfPCellInJustified((noticeBo.getAuthor() == null ? "" : noticeBo.getAuthor()))); 223 224 225 pdfTable.addCell(getPdfPCellInJustified("Volume/Issue/Copy # ")); 226 pdfTable.addCell(getPdfPCellInLeft(":")); 227 if(!noticeBo.getNoticeName().equalsIgnoreCase(OLEConstants.NOTICE_RECALL)){ 228 pdfTable.addCell(getPdfPCellInJustified(noticeBo.getVolumeNumber() == null ? "" : noticeBo.getVolumeNumber())); 229 }else{ 230 pdfTable.addCell(getPdfPCellInJustified((noticeBo.getVolumeIssueCopyNumber() == null ? "" : noticeBo.getVolumeIssueCopyNumber()))); 231 } 232 233 234 pdfTable.addCell(getPdfPCellInJustified("Library shelving location ")); 235 pdfTable.addCell(getPdfPCellInLeft(":")); 236 pdfTable.addCell(getPdfPCellInJustified((noticeBo.getItemShelvingLocation() == null ? "" : noticeBo.getItemShelvingLocation()))); 237 238 239 pdfTable.addCell(getPdfPCellInJustified("Call #")); 240 pdfTable.addCell(getPdfPCellInLeft(":")); 241 pdfTable.addCell(getPdfPCellInJustified((noticeBo.getItemCallNumber() == null ? "" : noticeBo.getItemCallNumber()))); 242 243 244 pdfTable.addCell(getPdfPCellInJustified("Item barcode")); 245 pdfTable.addCell(getPdfPCellInLeft(":")); 246 pdfTable.addCell(getPdfPCellInJustified((noticeBo.getItemId() == null ? "" : noticeBo.getItemId()))); 247 248 document.add(pdfTable); 249 paraGraph = new Paragraph(); 250 paraGraph.add(Chunk.NEWLINE); 251 document.add(paraGraph); 252 253 //Information specific text 254 /* paraGraph = new Paragraph(); 255 paraGraph.add(new Chunk("Information specific text",boldFont)); 256 paraGraph.add(Chunk.NEWLINE); 257 document.add(paraGraph);*/ 258 if (noticeBo.getNoticeName().equals("Recall")) { 259 pdfTable = new PdfPTable(3); 260 pdfPCell = new PdfPCell(new Paragraph("Original Due Date")); 261 pdfPCell.setBorder(pdfPCell.NO_BORDER); 262 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_JUSTIFIED); 263 pdfTable.addCell(pdfPCell); 264 pdfPCell = new PdfPCell(new Paragraph(":")); 265 pdfPCell.setBorder(pdfPCell.NO_BORDER); 266 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_LEFT); 267 pdfTable.addCell(pdfPCell); 268 pdfPCell = new PdfPCell(new Paragraph(new Chunk(noticeBo.getOriginalDueDate() == null ? "" : noticeBo.getOriginalDueDate().toString()))); 269 pdfPCell.setBorder(pdfPCell.NO_BORDER); 270 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_JUSTIFIED); 271 pdfTable.addCell(pdfPCell); 272 pdfPCell = new PdfPCell(new Paragraph(new Chunk("New Due Date"))); 273 pdfPCell.setBorder(pdfPCell.NO_BORDER); 274 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_JUSTIFIED); 275 pdfTable.addCell(pdfPCell); 276 pdfPCell = new PdfPCell(new Paragraph(":")); 277 pdfPCell.setBorder(pdfPCell.NO_BORDER); 278 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_LEFT); 279 pdfTable.addCell(pdfPCell); 280 pdfPCell = new PdfPCell(new Paragraph(new Chunk(noticeBo.getNewDueDate() == null ? "" : noticeBo.getNewDueDate().toString()))); 281 pdfPCell.setBorder(pdfPCell.NO_BORDER); 282 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_JUSTIFIED); 283 pdfTable.addCell(pdfPCell); 284 document.add(pdfTable); 285 paraGraph = new Paragraph(); 286 paraGraph.add(Chunk.NEWLINE); 287 document.add(paraGraph); 288 } else if (noticeBo.getNoticeName().equals("OnHold")) { 289 pdfTable = new PdfPTable(3); 290 291 pdfTable.addCell(getPdfPCellInJustified("Pick Up Location")); 292 pdfTable.addCell(getPdfPCellInLeft(":")); 293 pdfTable.addCell(getPdfPCellInJustified((noticeBo.getPickUpLocation() != null ? noticeBo.getPickUpLocation() : ""))); 294 295 pdfTable.addCell(getPdfPCellInJustified("Circulation Location / Library Name")); 296 pdfTable.addCell(getPdfPCellInLeft(":")); 297 pdfTable.addCell(getPdfPCellInJustified((noticeBo.getCirculationDeskName() != null ? noticeBo.getCirculationDeskName() : ""))); 298 299 300 pdfTable.addCell(getPdfPCellInJustified("Address")); 301 pdfTable.addCell(getPdfPCellInLeft(":")); 302 pdfTable.addCell(getPdfPCellInJustified((noticeBo.getCirculationDeskAddress() != null ? noticeBo.getCirculationDeskAddress() : ""))); 303 304 pdfTable.addCell(getPdfPCellInJustified("Email")); 305 pdfTable.addCell(getPdfPCellInLeft(":")); 306 pdfTable.addCell(getPdfPCellInJustified((noticeBo.getCirculationDeskEmailAddress() != null ? noticeBo.getCirculationDeskEmailAddress() : ""))); 307 308 pdfTable.addCell(getPdfPCellInJustified("Phone #")); 309 pdfTable.addCell(getPdfPCellInLeft(":")); 310 pdfTable.addCell(getPdfPCellInJustified((noticeBo.getCirculationDeskPhoneNumber() != null ? noticeBo.getCirculationDeskPhoneNumber() : ""))); 311 312 document.add(pdfTable); 313 paraGraph = new Paragraph(); 314 paraGraph.add(Chunk.NEWLINE); 315 document.add(paraGraph); 316 317 pdfTable.addCell(getPdfPCellInJustified("Item Will Be Held until")); 318 pdfTable.addCell(getPdfPCellInLeft(":")); 319 pdfTable.addCell(getPdfPCellInJustified((noticeBo.getOnHoldDueDate() != null ? noticeBo.getOnHoldDueDate().toString() : ""))); 320 321 document.add(pdfTable); 322 paraGraph = new Paragraph(); 323 paraGraph.add(Chunk.NEWLINE); 324 document.add(paraGraph); 325 } else if (noticeBo.getNoticeName().equals("OverdueNotice")) { 326 pdfTable = new PdfPTable(3); 327 328 pdfTable.addCell(getPdfPCellInJustified("Item was due")); 329 pdfTable.addCell(getPdfPCellInLeft(":")); 330 pdfTable.addCell(getPdfPCellInJustified((noticeBo.getDueDate() != null ? noticeBo.getDueDate().toString() : ""))); 331 332 document.add(pdfTable); 333 document.add(getPdfParagraphNewLine()); 334 } 335 336 //My Account 337 /* PdfContentByte cb = writer.getDirectContent(); 338 cb.setLineWidth(1); 339 cb.moveTo(0, 245); 340 cb.lineTo(0 + document.getPageSize().width(), 245); 341 cb.stroke(); 342 cb = writer.getDirectContent(); 343 cb.setLineWidth(1); 344 cb.moveTo(0, 222); 345 cb.lineTo(0 + document.getPageSize().width(), 222); 346 cb.stroke(); 347 paraGraph = new Paragraph();*/ 348 /*paraGraph.add(new Chunk("My Account",boldFont)); 349 paraGraph.add(Chunk.NEWLINE);*/ 350 String url = ConfigContext.getCurrentContextConfig().getProperty("ole.fs.url.base"); 351 //String myAccountURL = loanProcessor.getParameter(OLEConstants.MY_ACCOUNT_URL); 352 String myAccountURL = url+OLEConstants.OLE_MY_ACCOUNT_URL_CHANNEL+url+OLEConstants.OLE_MY_ACCOUNT_URL; 353 if (myAccountURL != null && !myAccountURL.trim().isEmpty()) { 354 Font ver_15_normal = FontFactory.getFont("Times-Roman", 15, Font.BOLD,BaseColor.BLUE); 355 ver_15_normal.setColor(BaseColor.BLUE); 356 ver_15_normal.setStyle(Font.UNDERLINE); 357 Anchor anchor = new Anchor("MyAccount", ver_15_normal); 358 anchor.setName("My Account"); 359 anchor.setReference(myAccountURL); 360 Paragraph newParaGraph = new Paragraph(); 361 newParaGraph.add(anchor); 362 newParaGraph.setFont(ver_15_normal); 363 newParaGraph.setAlignment(Element.ALIGN_CENTER); 364 document.add(newParaGraph); 365 } 366 outputStream.flush(); 367 document.close(); 368 outputStream.close(); 369 result = true; 370 } catch (Exception ex) { 371 LOG.error("Exception while creating pdf", ex); 372 } 373 return result; 374 } 375 376 public void createSlip(OleDeliverRequestBo oleDeliverRequestBo, HttpServletResponse response) { 377 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 378 OutputStream outputStream = null; 379 String directory = getLoanProcessor().getParameter("PDF_LOCATION"); 380 381 String fileName = "In Transit Routing slip" + oleDeliverRequestBo.getItemId(); 382 383 Document document = new Document(PageSize.A4); 384 try { 385 response.setContentType("application/pdf"); 386 outputStream = new FileOutputStream(directory + "/" + fileName + ".pdf"); 387 PdfWriter writer = PdfWriter.getInstance(document, outputStream); 388 Font boldFont = FontFactory.getFont("Times-Roman", 15, Font.BOLD); 389 Font ver_15_normal = FontFactory.getFont("VERDANA", 15, 0); 390 document.open(); 391 document.newPage(); 392 PdfPTable pdfTable = new PdfPTable(3); 393 Paragraph paraGraph = new Paragraph(); 394 paraGraph.setAlignment(Element.ALIGN_CENTER); 395 paraGraph.add(new Chunk("Routing Slip In-Transit Per Staff Request", boldFont)); 396 paraGraph.add(Chunk.NEWLINE); 397 paraGraph.add(Chunk.NEWLINE); 398 paraGraph.add(Chunk.NEWLINE); 399 pdfTable.addCell(getPdfPCellInJustified("Route To")); 400 pdfTable.addCell(getPdfPCellInLeft(":")); 401 pdfTable.addCell(getPdfPCellInJustified(oleDeliverRequestBo.getCirculationLocationId())); 402 403 pdfTable.addCell(getPdfPCellInJustified("Requested By")); 404 pdfTable.addCell(getPdfPCellInLeft(":")); 405 pdfTable.addCell(getPdfPCellInJustified(oleDeliverRequestBo.getBorrowerId())); 406 407 408 pdfTable.addCell(getPdfPCellInJustified("Date/Time ")); 409 pdfTable.addCell(getPdfPCellInLeft(":")); 410 pdfTable.addCell(getPdfPCellInJustified(oleDeliverRequestBo.getCreateDate().toString())); 411 412 Map<String, String> operatorMap = new HashMap<String, String>(); 413 operatorMap.put("operatorId", oleDeliverRequestBo.getOperatorCreateId()); 414 operatorMap.put("defaultLocation", "true"); 415 java.util.List<OleCirculationDeskDetail> circulationDeskDetailList = (java.util.List<OleCirculationDeskDetail>) KRADServiceLocator.getBusinessObjectService().findMatching(OleCirculationDeskDetail.class, operatorMap); 416 String locationName = ""; 417 if (circulationDeskDetailList.size() > 0) { 418 locationName = circulationDeskDetailList.get(0).getOleCirculationDesk().getOleCirculationDeskLocations().get(0).getCirculationDeskLocation(); 419 } 420 421 422 pdfTable.addCell(getPdfPCellInJustified("Circulation Location")); 423 pdfTable.addCell(getPdfPCellInLeft(":")); 424 pdfTable.addCell(getPdfPCellInJustified(locationName)); 425 426 427 pdfTable.addCell(getPdfPCellInJustified("Item Barcode")); 428 pdfTable.addCell(getPdfPCellInLeft(":")); 429 pdfTable.addCell(getPdfPCellInJustified(oleDeliverRequestBo.getItemId())); 430 431 pdfTable.addCell(getPdfPCellInJustified("Title")); 432 pdfTable.addCell(getPdfPCellInLeft(":")); 433 pdfTable.addCell(getPdfPCellInJustified(oleDeliverRequestBo.getTitle())); 434 435 pdfTable.addCell(getPdfPCellInJustified("Call Number")); 436 pdfTable.addCell(getPdfPCellInLeft(":")); 437 pdfTable.addCell(getPdfPCellInJustified(oleDeliverRequestBo.getCallNumber())); 438 439 pdfTable.addCell(getPdfPCellInJustified("Copy Number")); 440 pdfTable.addCell(getPdfPCellInLeft(":")); 441 pdfTable.addCell(getPdfPCellInJustified(oleDeliverRequestBo.getCopyNumber())); 442 443 444 response.setContentType("application/pdf"); 445 OutputStream os = response.getOutputStream(); 446 PdfWriter.getInstance(document, os); 447 document.open(); 448 document.add(paraGraph); 449 document.add(pdfTable); 450 document.close(); 451 byteArrayOutputStream.flush(); 452 byteArrayOutputStream.close(); 453 os.flush(); 454 os.close(); 455 } catch (Exception e) { 456 LOG.error("Exception while creating slip", e); 457 } 458 } 459 460 private PdfPCell getPdfPCellInJustified(String chunk) { 461 PdfPCell pdfPCell = new PdfPCell(new Paragraph(new Chunk(chunk))); 462 pdfPCell.setBorder(pdfPCell.NO_BORDER); 463 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_JUSTIFIED); 464 return pdfPCell; 465 } 466 467 private PdfPCell getPdfPCellInLeft(String chunk) { 468 PdfPCell pdfPCell = new PdfPCell(new Paragraph(new Chunk(chunk))); 469 pdfPCell.setBorder(pdfPCell.NO_BORDER); 470 pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_LEFT); 471 return pdfPCell; 472 } 473 474 475}