com.lowagie.rups.model.PdfFile Maven / Gradle / Ivy
/*
* $Id: PdfFile.java 4033 2009-07-23 13:08:02Z blowagie $
*
* Copyright 2007 Bruno Lowagie.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
package com.lowagie.rups.model;
import com.lowagie.text.DocumentException;
import com.lowagie.text.exceptions.BadPasswordException;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.RandomAccessFileOrArray;
import java.io.File;
import java.io.IOException;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
/**
* Wrapper for both iText's PdfReader (referring to a PDF file to read) and SUN's PDFFile (referring to the same PDF
* file to render).
*/
public class PdfFile {
// member variables
/**
* The directory where the file can be found (if the PDF was passed as a file).
*/
protected File directory = null;
/**
* The original filename.
*/
protected String filename = null;
/**
* The PdfReader object.
*/
protected PdfReader reader = null;
/**
* The file permissions
*/
protected Permissions permissions = null;
// constructors
/**
* Constructs a PdfFile object.
*
* @param file the File to read
* @throws IOException thrown when an I/O operation fails
* @throws DocumentException thrown when an error occurs with the Document
*/
public PdfFile(File file) throws IOException, DocumentException {
if (file == null) {
throw new IOException("No file selected.");
}
RandomAccessFileOrArray pdf = new RandomAccessFileOrArray(file.getAbsolutePath());
directory = file.getParentFile();
filename = file.getName();
readFile(pdf);
}
/**
* Constructs a PdfFile object.
*
* @param file the byte[] to read
* @throws IOException thrown when an I/O operation fails
* @throws DocumentException thrown when an error occurs with the Document
*/
public PdfFile(byte[] file) throws IOException, DocumentException {
RandomAccessFileOrArray pdf = new RandomAccessFileOrArray(file);
readFile(pdf);
}
/**
* Does the actual reading of the file into PdfReader and PDFFile.
*
* @param pdf a Random Access File or Array
* @throws IOException thrown when an I/O operation goes wrong
* @throws DocumentException thrown when something goes wrong with a Document
*/
protected void readFile(RandomAccessFileOrArray pdf) throws IOException, DocumentException {
// reading the file into PdfReader
permissions = new Permissions();
try {
reader = new PdfReader(pdf, null);
permissions.setEncrypted(false);
} catch (BadPasswordException bpe) {
JPasswordField passwordField = new JPasswordField(32);
JOptionPane.showConfirmDialog(null, passwordField, "Enter the User or Owner Password of this PDF file",
JOptionPane.OK_CANCEL_OPTION);
byte[] password = new String(passwordField.getPassword()).getBytes();
reader = new PdfReader(pdf, password);
permissions.setEncrypted(true);
permissions.setCryptoMode(reader.getCryptoMode());
permissions.setPermissions(reader.getPermissions());
if (reader.isOpenedWithFullPermissions()) {
permissions.setOwnerPassword(password);
permissions.setUserPassword(reader.computeUserPassword());
} else {
throw new IOException("You need the owner password of this file to open it in iText Trapeze.");
}
}
}
/**
* Getter for iText's PdfReader object.
*
* @return a PdfReader object
*/
public PdfReader getPdfReader() {
return reader;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy