Mercurial > hg > digilib-old
diff 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 |
line wrap: on
line diff
--- a/servlet/src/digilib/pdf/PDFTitlePage.java Fri Jan 07 12:00:10 2011 +0100 +++ b/servlet/src/digilib/pdf/PDFTitlePage.java Sun Jan 09 21:11:03 2011 +0100 @@ -1,5 +1,6 @@ package digilib.pdf; +import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; @@ -14,8 +15,7 @@ import com.itextpdf.text.Image; import com.itextpdf.text.Paragraph; - -import digilib.io.DocuDirCache; +import digilib.io.FileOpException; import digilib.servlet.PDFCache; import digilib.servlet.PDFRequest; @@ -27,7 +27,6 @@ private PDFRequest job_info = null; private DigilibInfoReader info_reader= null; - private DocuDirCache dirCache = null; protected static Logger logger = Logger.getLogger("digilib.servlet"); @@ -37,12 +36,27 @@ */ public PDFTitlePage(PDFRequest pdfji){ job_info = pdfji; - dirCache = (DocuDirCache) job_info.getDlConfig().getValue("servlet.dir.cache"); + + // use MPIWG-style info.xml + info_reader = getInfoXmlReader(pdfji); + } - String fn = getBase(dirCache.getDirectory(pdfji.getImageJobInformation().getAsString("fn")).getDir().getPath()) + "presentation/info.xml"; - - info_reader = new DigilibInfoReader(fn); - } + /** + * @param pdfji + * @return + */ + protected DigilibInfoReader getInfoXmlReader(PDFRequest pdfji) { + try { + // try to load ../presentation/info.xml + File imgDir = pdfji.getImageJobInformation().getFileDirectory().getDir(); + File docDir = imgDir.getParentFile(); + File infoFn = new File(new File(docDir, "presentation"), "info.xml"); + return new DigilibInfoReader(infoFn.getAbsolutePath()); + } catch (FileOpException e) { + logger.warn("info.xml not found"); + } + return null; + } /** * generate iText-PDF-Contents for the title page @@ -58,7 +72,6 @@ content.add(Chunk.NEWLINE); } - // add logo content.add(getLogo()); content.add(Chunk.NEWLINE); @@ -88,9 +101,6 @@ content.add(Chunk.NEWLINE); content.add(Chunk.NEWLINE); - // add credits - content.add(new Paragraph("MPIWG Berlin 2009", FontFactory.getFont(FontFactory.HELVETICA,10))); - // add digilib version content.add(new Paragraph(getDigilibVersion(),FontFactory.getFont(FontFactory.HELVETICA,10))); @@ -108,32 +118,11 @@ return content; } - /** - * return base directory of an image directory - * - * @param path - * @return - */ - private String getBase(String path){ - if(path.contains("/")){ - String[] x = path.split("/"); - String newpath = ""; - for(int i=0; i<x.length-1; i++){ - newpath += x[i]+"/"; - } - return newpath; - } - else - return ""; - } - - - /** + /* * Methods for the different attributes. * */ - private Image getLogo(){ try { URL url = new URL(job_info.getDlConfig().getAsString("pdf-logo")); @@ -144,34 +133,35 @@ } } catch (BadElementException e) { logger.error(e.getMessage()); - e.printStackTrace(); } catch (MalformedURLException e) { logger.error(e.getMessage()); - e.printStackTrace(); } catch (IOException e) { logger.error(e.getMessage()); - e.printStackTrace(); } return null; } + private String getTitle(){ if(info_reader.hasInfo()) return info_reader.getAsString("title"); else return job_info.getImageJobInformation().getAsString("fn"); } + private String getAuthor(){ if(info_reader.hasInfo()) return info_reader.getAsString("author"); else return " "; } + private String getDate(){ if(info_reader.hasInfo()) return info_reader.getAsString("date"); else return " "; } + private String getPages(){ return "Pages "+job_info.getAsString("pgs") + " (scan page numbers)"; }