Mercurial > hg > digilib-old
comparison servlet/src/digilib/pdf/PDFTitlePage.java @ 557:0885f5ca5b24 digilibPDF
more refactoring and rearranging
pdf and image generation works now
| author | robcast |
|---|---|
| date | Thu, 16 Dec 2010 21:19:11 +0100 |
| parents | servlet/src/digilib/servlet/PDFTitlePage.java@bc9196347188 |
| children | 95417c4615b8 85e465e6a642 |
comparison
equal
deleted
inserted
replaced
| 556:5cc180bb0a5c | 557:0885f5ca5b24 |
|---|---|
| 1 package digilib.pdf; | |
| 2 | |
| 3 import java.io.IOException; | |
| 4 import java.net.MalformedURLException; | |
| 5 import java.net.URL; | |
| 6 | |
| 7 import org.apache.log4j.Logger; | |
| 8 | |
| 9 import com.itextpdf.text.Anchor; | |
| 10 import com.itextpdf.text.BadElementException; | |
| 11 import com.itextpdf.text.Chunk; | |
| 12 import com.itextpdf.text.Element; | |
| 13 import com.itextpdf.text.FontFactory; | |
| 14 import com.itextpdf.text.Image; | |
| 15 import com.itextpdf.text.Paragraph; | |
| 16 | |
| 17 | |
| 18 import digilib.io.DigilibInfoReader; | |
| 19 import digilib.io.DocuDirCache; | |
| 20 import digilib.servlet.PDFCache; | |
| 21 import digilib.servlet.PDFRequest; | |
| 22 | |
| 23 /** A class for the generation of title pages for the generated pdf documents. | |
| 24 * | |
| 25 * | |
| 26 */ | |
| 27 public class PDFTitlePage { | |
| 28 | |
| 29 private PDFRequest job_info = null; | |
| 30 private DigilibInfoReader info_reader= null; | |
| 31 private DocuDirCache dirCache = null; | |
| 32 protected static Logger logger = Logger.getLogger("digilib.servlet"); | |
| 33 | |
| 34 | |
| 35 /** | |
| 36 * Initialize a TitlePage | |
| 37 * @param pdfji | |
| 38 */ | |
| 39 public PDFTitlePage(PDFRequest pdfji){ | |
| 40 job_info = pdfji; | |
| 41 dirCache = (DocuDirCache) job_info.getDlConfig().getValue("servlet.dir.cache"); | |
| 42 | |
| 43 String fn = getBase(dirCache.getDirectory(pdfji.getImageJobInformation().getAsString("fn")).getDir().getPath()) + "presentation/info.xml"; | |
| 44 | |
| 45 info_reader = new DigilibInfoReader(fn); | |
| 46 } | |
| 47 | |
| 48 /** | |
| 49 * generate iText-PDF-Contents for the title page | |
| 50 * | |
| 51 * @return | |
| 52 */ | |
| 53 public Element getPageContents(){ | |
| 54 Paragraph content = new Paragraph(); | |
| 55 content.setAlignment(Element.ALIGN_CENTER); | |
| 56 | |
| 57 // add vertical whitespace | |
| 58 for(int i=0; i<8; i++){ | |
| 59 content.add(Chunk.NEWLINE); | |
| 60 } | |
| 61 | |
| 62 | |
| 63 // add logo | |
| 64 content.add(getLogo()); | |
| 65 content.add(Chunk.NEWLINE); | |
| 66 content.add(Chunk.NEWLINE); | |
| 67 | |
| 68 // add title | |
| 69 Anchor title = new Anchor(new Paragraph(getTitle(),FontFactory.getFont(FontFactory.HELVETICA,16))); | |
| 70 String burl = job_info.getImageJobInformation().getAsString("base.url"); | |
| 71 | |
| 72 title.setReference(burl+"digilib.jsp?fn="+job_info.getImageJobInformation().getAsString("fn")); | |
| 73 content.add(title); | |
| 74 content.add(Chunk.NEWLINE); | |
| 75 | |
| 76 // add author | |
| 77 if(getDate()!=" ") | |
| 78 content.add(new Paragraph(getAuthor()+" ("+getDate()+")",FontFactory.getFont(FontFactory.HELVETICA,14))); | |
| 79 else | |
| 80 content.add(new Paragraph(getAuthor(),FontFactory.getFont(FontFactory.HELVETICA,14))); | |
| 81 | |
| 82 content.add(Chunk.NEWLINE); | |
| 83 | |
| 84 // add page numbers | |
| 85 content.add(new Paragraph(getPages(), FontFactory.getFont(FontFactory.HELVETICA, 12))); | |
| 86 | |
| 87 | |
| 88 content.add(Chunk.NEWLINE); | |
| 89 content.add(Chunk.NEWLINE); | |
| 90 content.add(Chunk.NEWLINE); | |
| 91 | |
| 92 // add credits | |
| 93 content.add(new Paragraph("MPIWG Berlin 2009", FontFactory.getFont(FontFactory.HELVETICA,10))); | |
| 94 | |
| 95 // add digilib version | |
| 96 content.add(new Paragraph(getDigilibVersion(),FontFactory.getFont(FontFactory.HELVETICA,10))); | |
| 97 | |
| 98 for(int i=0; i<8; i++){ | |
| 99 content.add(Chunk.NEWLINE); | |
| 100 } | |
| 101 Anchor address = new Anchor( | |
| 102 new Paragraph(burl+"digilib.jsp?fn="+job_info.getImageJobInformation().getAsString("fn"), FontFactory.getFont(FontFactory.COURIER, 9)) | |
| 103 ); | |
| 104 address.setReference(burl+"digilib.jsp?fn="+job_info.getImageJobInformation().getAsString("fn")); | |
| 105 | |
| 106 content.add(address); | |
| 107 | |
| 108 | |
| 109 return content; | |
| 110 } | |
| 111 | |
| 112 /** | |
| 113 * return base directory of an image directory | |
| 114 * | |
| 115 * @param path | |
| 116 * @return | |
| 117 */ | |
| 118 private String getBase(String path){ | |
| 119 if(path.contains("/")){ | |
| 120 String[] x = path.split("/"); | |
| 121 String newpath = ""; | |
| 122 for(int i=0; i<x.length-1; i++){ | |
| 123 newpath += x[i]+"/"; | |
| 124 } | |
| 125 return newpath; | |
| 126 } | |
| 127 else | |
| 128 return ""; | |
| 129 } | |
| 130 | |
| 131 | |
| 132 /** | |
| 133 * Methods for the different attributes. | |
| 134 * | |
| 135 */ | |
| 136 | |
| 137 | |
| 138 private Image getLogo(){ | |
| 139 try { | |
| 140 URL url = new URL(job_info.getDlConfig().getAsString("pdf-logo")); | |
| 141 if(url!=null && !url.equals("")){ | |
| 142 Image logo = Image.getInstance(url); | |
| 143 logo.setAlignment(Element.ALIGN_CENTER); | |
| 144 return logo; | |
| 145 } | |
| 146 } catch (BadElementException e) { | |
| 147 logger.error(e.getMessage()); | |
| 148 e.printStackTrace(); | |
| 149 } catch (MalformedURLException e) { | |
| 150 logger.error(e.getMessage()); | |
| 151 e.printStackTrace(); | |
| 152 } catch (IOException e) { | |
| 153 logger.error(e.getMessage()); | |
| 154 e.printStackTrace(); | |
| 155 } | |
| 156 return null; | |
| 157 } | |
| 158 private String getTitle(){ | |
| 159 if(info_reader.hasInfo()) | |
| 160 return info_reader.getAsString("title"); | |
| 161 else | |
| 162 return job_info.getImageJobInformation().getAsString("fn"); | |
| 163 } | |
| 164 private String getAuthor(){ | |
| 165 if(info_reader.hasInfo()) | |
| 166 return info_reader.getAsString("author"); | |
| 167 else | |
| 168 return " "; | |
| 169 } | |
| 170 private String getDate(){ | |
| 171 if(info_reader.hasInfo()) | |
| 172 return info_reader.getAsString("date"); | |
| 173 else | |
| 174 return " "; | |
| 175 } | |
| 176 private String getPages(){ | |
| 177 return "Pages "+job_info.getAsString("pgs") + " (scan page numbers)"; | |
| 178 } | |
| 179 | |
| 180 private String getDigilibVersion(){ | |
| 181 return "Digilib PDFMaker v."+PDFCache.version; | |
| 182 } | |
| 183 | |
| 184 } |
