00001 package edu.stanford.hci.r3.paper.sheets;
00002
00003 import java.io.File;
00004 import java.io.FileInputStream;
00005 import java.io.FileNotFoundException;
00006 import java.io.IOException;
00007
00008 import com.lowagie.text.Rectangle;
00009 import com.lowagie.text.pdf.PdfReader;
00010
00011 import edu.stanford.hci.r3.paper.Sheet;
00012 import edu.stanford.hci.r3.render.SheetRenderer;
00013 import edu.stanford.hci.r3.render.sheets.PDFSheetRenderer;
00014 import edu.stanford.hci.r3.units.Points;
00015 import edu.stanford.hci.r3.util.DebugUtils;
00016
00030 public class PDFSheet extends Sheet {
00031
00032 private File file;
00033
00034 private int pageNum;
00035
00036 private PdfReader pdfReader;
00037
00043 public PDFSheet(File pdfFile) {
00044 this(pdfFile, 1);
00045 }
00046
00052 public PDFSheet(File pdfFile, int pageNumber) {
00053 file = pdfFile;
00054 addConfigurationPath(pdfFile.getParentFile());
00055
00056 pageNum = pageNumber;
00057 try {
00058 pdfReader = new PdfReader(new FileInputStream(file));
00059 } catch (FileNotFoundException e) {
00060 e.printStackTrace();
00061 } catch (IOException e) {
00062 e.printStackTrace();
00063 }
00064
00065
00066 final int numberOfPages = pdfReader.getNumberOfPages();
00067 if (pageNum < 1) {
00068 System.out.println("WARNING: pageNum: " + pageNum
00069 + " is an invalid page. Setting it to 1. (PDFSheet.java)");
00070 pageNum = 1;
00071 }
00072 if (pageNum > numberOfPages) {
00073 System.out.println("WARNING: pageNum: " + pageNum
00074 + " is an invalid page. Setting it to " + numberOfPages + ". (PDFSheet.java)");
00075 pageNum = numberOfPages;
00076 }
00077
00078
00079 final Rectangle pageSize = pdfReader.getPageSize(pageNum);
00080 setSize(new Points(pageSize.width()), new Points(pageSize.height()));
00081
00082
00083 DebugUtils.println("The Rotation of the PDFSheet is: " + pdfReader.getPageRotation(pageNumber));
00084 }
00085
00089 public SheetRenderer getRenderer() {
00090 return new PDFSheetRenderer(this);
00091 }
00092
00096 public PdfReader getReader() {
00097 return pdfReader;
00098 }
00099 }