1 /* $Id: quickreferenceServlet.java,v 1.12 2004/05/17 12:47:19 rp Exp $ 2 * 3 * PDFlib+PDI client: mini imposition demo 4 */ 5 6 import java.io.*; 7 import javax.servlet.*; 8 import com.pdflib.pdflib; 9 import com.pdflib.PDFlibException; 10 11 public class quickreferenceServlet extends GenericServlet 12 { service(ServletRequest request, ServletResponse response)13 public void service (ServletRequest request, ServletResponse response) 14 { 15 int font, row = 0 , col = 0 , i; 16 int manual, pages; 17 final int maxrow=2, maxcol=2; 18 int endpage; 19 final float width = 500, height = 770; 20 int pageno; 21 String infile = "reference.pdf"; 22 /* This is where font/image/PDF input files live. Adjust as necessary.*/ 23 String searchpath = "../data"; 24 byte[] buf; 25 ServletOutputStream output; 26 pdflib p = null; 27 28 try{ 29 p = new pdflib(); 30 31 // Generate a PDF in memory; insert a file name to create PDF on disk 32 if (p.begin_document("", "") == -1) { 33 throw new Exception("Couldn't create PDF output.\n"); 34 } 35 36 p.set_parameter("SearchPath", searchpath); 37 38 p.set_info("Creator", "quickreferenceServlet.java"); 39 p.set_info("Author", "Rainer Ploeckl"); 40 p.set_info("Title", "imposition demo (Java/Servlet)"); 41 42 manual = p.open_pdi(infile, "", 0); 43 i = 0; 44 45 if (manual == -1){ 46 throw new Exception("Error: " + p.get_errmsg()); 47 } 48 49 p.set_parameter("topdown", "true"); 50 51 endpage = (int)p.get_pdi_value("/Root/Pages/Count", manual, -1, 0); 52 53 for (pageno = 1; pageno <= endpage; pageno++) { 54 if (row == 0 && col == 0) { 55 i++; 56 p.begin_page_ext(width, height, ""); 57 font = p.load_font("Helvetica-Bold", "unicode", ""); 58 p.setfont(font, 18); 59 p.set_text_pos(24, 24); 60 p.show("PDFlib Quick Reference"); 61 } 62 63 pages = p.open_pdi_page(manual, pageno, ""); 64 65 if (pages == -1) { 66 throw new Exception("Error: " + p.get_errmsg()); 67 } 68 69 p.fit_pdi_page(manual, width/maxcol*col, 70 (row + 1) * height/maxrow, "scale " + (float)1/maxrow); 71 p.close_pdi_page(pages); 72 73 col++; 74 if (col == maxcol) { 75 col = 0; 76 row++; 77 } 78 if (row == maxrow) { 79 row = 0; 80 p.end_page_ext(""); 81 } 82 } 83 84 // finish the last partial page 85 if (row != 0 || col != 0) 86 p.end_page_ext(""); 87 88 p.end_document(""); 89 p.close_pdi(manual); 90 buf = p.get_buffer(); 91 92 response.setContentType("application/pdf"); 93 response.setContentLength(buf.length); 94 95 output = response.getOutputStream(); 96 output.write(buf); 97 output.close(); 98 } catch (PDFlibException e) { 99 System.err.print("PDFlib exception occurred in quickreference sample:\n"); 100 System.err.print("[" + e.get_errnum() + "] " + e.get_apiname() + 101 ": " + e.get_errmsg() + "\n"); 102 } catch (Exception e) { 103 System.err.println(e.getMessage()); 104 } finally { 105 if (p != null) { 106 p.delete(); /* delete the PDFlib object */ 107 } 108 } 109 } 110 } 111