annotate servlet/src/digilib/pdf/PDFTitlePage.java @ 787:b322f553f92e jquery

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