Java源码示例:com.lowagie.text.exceptions.BadPasswordException
示例1
void addDocument(PdfReader reader) throws DocumentException, IOException {
if (!reader.isOpenedWithFullPermissions()) {
throw new BadPasswordException("PdfReader not opened with owner password");
}
openDoc();
if (readers2intrefs.containsKey(reader)) {
reader = new PdfReader(reader);
} else {
if (reader.isTampered()) {
throw new DocumentException("The document was reused.");
}
reader.consolidateNamedDestinations();
reader.setTampered(true);
}
reader.shuffleSubsetNames();
readers2intrefs.put(reader, new IntHashtable());
readers.add(reader);
int len = reader.getNumberOfPages();
IntHashtable refs = new IntHashtable();
for (int p = 1; p <= len; ++p) {
refs.put(reader.getPageOrigRef(p).getNumber(), 1);
reader.releasePage(p);
}
pages2intrefs.put(reader, refs);
visited.put(reader, new IntHashtable());
fields.add(reader.getAcroFields());
updateCalculationOrder(reader);
}
示例2
void addDocument(PdfReader reader) throws DocumentException, IOException {
if (!reader.isOpenedWithFullPermissions())
throw new BadPasswordException("PdfReader not opened with owner password");
openDoc();
if (readers2intrefs.containsKey(reader)) {
reader = new PdfReader(reader);
}
else {
if (reader.isTampered())
throw new DocumentException("The document was reused.");
reader.consolidateNamedDestinations();
reader.setTampered(true);
}
reader.shuffleSubsetNames();
readers2intrefs.put(reader, new IntHashtable());
readers.add(reader);
int len = reader.getNumberOfPages();
IntHashtable refs = new IntHashtable();
for (int p = 1; p <= len; ++p) {
refs.put(reader.getPageOrigRef(p).getNumber(), 1);
reader.releasePage(p);
}
pages2intrefs.put(reader, refs);
visited.put(reader, new IntHashtable());
fields.add(reader.getAcroFields());
updateCalculationOrder(reader);
}
示例3
@Test(expected=BadPasswordException.class)
public void testDecyptNoPassword() throws DocumentException, IOException {
byte[] crypted = createEncryptedPDF();
// NO password supplied, will throw BaddPasswordException
PdfReader reader = new PdfReader(crypted);
Assert.assertEquals(1, reader.getNumberOfPages());
reader.close();
}
示例4
@Test(expected=BadPasswordException.class)
public void testDecyptBadPassword() throws DocumentException, IOException {
byte[] crypted = createEncryptedPDF();
// NO password supplied, will throw BaddPasswordException
PdfReader reader = new PdfReader(crypted, "badpassword".getBytes());
Assert.assertEquals(1, reader.getNumberOfPages());
reader.close();
}
示例5
/**
* The OpenPDF implementation of the Reader
*
* @param dssDocument {@link DSSDocument} to read
* @param passwordProtection binaries of a password to open a protected document
* @throws IOException if an exception occurs
* @throws InvalidPasswordException if the password is not provided or invalid for a protected document
*/
public ITextDocumentReader(DSSDocument dssDocument, byte[] passwordProtection) throws IOException, InvalidPasswordException {
Objects.requireNonNull(dssDocument, "The document must be defined!");
try (InputStream is = dssDocument.openStream()) {
this.pdfReader = new PdfReader(is, passwordProtection);
} catch (BadPasswordException e) {
throw new InvalidPasswordException(e.getMessage());
}
}
示例6
/**
* The OpenPDF implementation of the Reader
*
* @param binaries a byte array of a PDF to read
* @param passwordProtection binaries of a password to open a protected document
* @throws IOException if an exception occurs
* @throws eu.europa.esig.dss.pades.exception.InvalidPasswordException if the password is not provided or invalid for a protected document
*/
public ITextDocumentReader(byte[] binaries, byte[] passwordProtection) throws IOException, InvalidPasswordException {
Objects.requireNonNull(binaries, "The document binaries must be defined!");
try {
this.pdfReader = new PdfReader(binaries, passwordProtection);
} catch (BadPasswordException e) {
throw new InvalidPasswordException(e.getMessage());
}
}
示例7
/**
* Creates new PdfStamperImp.
*
* @param reader the read PDF
* @param os the output destination
* @param pdfVersion the new pdf version or '\0' to keep the same version as the original
* document
* @param append
* @throws DocumentException on error
* @throws IOException
*/
PdfStamperImp(PdfReader reader, OutputStream os, char pdfVersion, boolean append) throws DocumentException, IOException {
super(new PdfDocument(), os);
if (!reader.isOpenedWithFullPermissions()) {
throw new BadPasswordException("PdfReader not opened with owner password");
}
if (reader.isTampered()) {
throw new DocumentException("The original document was reused. Read it again from file.");
}
reader.setTampered(true);
this.reader = reader;
file = reader.getSafeFile();
this.append = append;
if (append) {
if (reader.isRebuilt()) {
throw new DocumentException("Append mode requires a document without errors even if recovery was possible.");
}
pdf_version.setAppendmode(true);
file.reOpen();
byte buf[] = new byte[8192];
int n;
while ((n = file.read(buf)) > 0) {
this.os.write(buf, 0, n);
}
file.close();
prevxref = reader.getLastXref();
reader.setAppendable(true);
} else {
if (pdfVersion == 0) {
super.setPdfVersion(reader.getPdfVersion());
} else {
super.setPdfVersion(pdfVersion);
}
}
super.open();
pdf.addWriter(this);
if (append) {
body.setRefnum(reader.getXrefSize());
marked = new IntHashtable();
if (reader.isNewXrefType()) {
fullCompression = true;
}
if (reader.isHybridXref()) {
fullCompression = false;
}
}
initialXrefSize = reader.getXrefSize();
}
示例8
/** Creates new PdfStamperImp.
* @param reader the read PDF
* @param os the output destination
* @param pdfVersion the new pdf version or '\0' to keep the same version as the original
* document
* @param append
* @throws DocumentException on error
* @throws IOException
*/
PdfStamperImp(PdfReader reader, OutputStream os, char pdfVersion, boolean append) throws DocumentException, IOException {
super(new PdfDocument(), os);
if (!reader.isOpenedWithFullPermissions()) {
throw new BadPasswordException("PdfReader not opened with owner password");
}
if (reader.isTampered()) {
throw new DocumentException("The original document was reused. Read it again from file.");
}
reader.setTampered(true);
this.reader = reader;
file = reader.getSafeFile();
this.append = append;
if (append) {
if (reader.isRebuilt()) {
throw new DocumentException("Append mode requires a document without errors even if recovery was possible.");
}
if (reader.isEncrypted()) {
crypto = new PdfEncryption(reader.getDecrypt());
}
pdf_version.setAppendmode(true);
file.reOpen();
byte buf[] = new byte[8192];
int n;
while ((n = file.read(buf)) > 0)
this.os.write(buf, 0, n);
file.close();
prevxref = reader.getLastXref();
reader.setAppendable(true);
}
else {
if (pdfVersion == 0) {
super.setPdfVersion(reader.getPdfVersion());
}
else {
super.setPdfVersion(pdfVersion);
}
}
super.open();
pdf.addWriter(this);
if (append) {
body.setRefnum(reader.getXrefSize());
marked = new IntHashtable();
if (reader.isNewXrefType()) {
fullCompression = true;
}
if (reader.isHybridXref()) {
fullCompression = false;
}
}
initialXrefSize = reader.getXrefSize();
}