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 } |