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