annotate servlet/src/digilib/pdf/PDFTitlePage.java @ 595:e8668edcb880 stream

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