List of usage examples for org.apache.pdfbox.cos COSName ENCRYPT
COSName ENCRYPT
To view the source code for org.apache.pdfbox.cos COSName ENCRYPT.
Click Source Link
From source file:com.aaasec.sigserv.csspsupport.pdfbox.modifications.CsCOSWriter.java
License:Apache License
/** * This will write the body of the document. * * @param doc The document to write the body for. * * @throws IOException If there is an error writing the data. * @throws COSVisitorException If there is an error generating the data. *///w w w . java 2 s . c om protected void doWriteBody(COSDocument doc) throws IOException, COSVisitorException { COSDictionary trailer = doc.getTrailer(); COSDictionary root = (COSDictionary) trailer.getDictionaryObject(COSName.ROOT); COSDictionary info = (COSDictionary) trailer.getDictionaryObject(COSName.INFO); COSDictionary encrypt = (COSDictionary) trailer.getDictionaryObject(COSName.ENCRYPT); if (root != null) { addObjectToWrite(root); } if (info != null) { addObjectToWrite(info); } while (objectsToWrite.size() > 0) { COSBase nextObject = objectsToWrite.removeFirst(); objectsToWriteSet.remove(nextObject); doWriteObject(nextObject); } willEncrypt = false; if (encrypt != null) { addObjectToWrite(encrypt); } while (objectsToWrite.size() > 0) { COSBase nextObject = objectsToWrite.removeFirst(); objectsToWriteSet.remove(nextObject); doWriteObject(nextObject); } }
From source file:com.aaasec.sigserv.csspsupport.pdfbox.modifications.CsCOSWriter.java
License:Apache License
/** * This will write the pdf document./* w w w . j a v a 2 s . c om*/ * * @param doc The document to write. * @param idTime The time seed used to generate the id * * @throws COSVisitorException If an error occurs while generating the data. */ public void write(PDDocument doc, long idTime) throws COSVisitorException { document = doc; if (incrementalUpdate) { prepareIncrement(doc); } // if the document says we should remove encryption, then we shouldn't encrypt if (doc.isAllSecurityToBeRemoved()) { this.willEncrypt = false; // also need to get rid of the "Encrypt" in the trailer so readers // don't try to decrypt a document which is not encrypted COSDocument cosDoc = doc.getDocument(); COSDictionary trailer = cosDoc.getTrailer(); trailer.removeItem(COSName.ENCRYPT); } else { SecurityHandler securityHandler = document.getSecurityHandler(); if (securityHandler != null) { try { securityHandler.prepareDocumentForEncryption(document); this.willEncrypt = true; } catch (IOException e) { throw new COSVisitorException(e); } catch (CryptographyException e) { throw new COSVisitorException(e); } } else { this.willEncrypt = false; } } COSDocument cosDoc = document.getDocument(); COSDictionary trailer = cosDoc.getTrailer(); COSArray idArray = (COSArray) trailer.getDictionaryObject(COSName.ID); if (idArray == null || incrementalUpdate) { try { //algorithm says to use time/path/size/values in doc to generate //the id. We don't have path or size, so do the best we can MessageDigest md = MessageDigest.getInstance("MD5"); md.update(Long.toString(idTime).getBytes("ISO-8859-1")); COSDictionary info = (COSDictionary) trailer.getDictionaryObject(COSName.INFO); if (info != null) { Iterator<COSBase> values = info.getValues().iterator(); while (values.hasNext()) { md.update(values.next().toString().getBytes("ISO-8859-1")); } } idArray = new COSArray(); COSString id = new COSString(md.digest()); idArray.add(id); idArray.add(id); trailer.setItem(COSName.ID, idArray); } catch (NoSuchAlgorithmException e) { throw new COSVisitorException(e); } catch (UnsupportedEncodingException e) { throw new COSVisitorException(e); } } cosDoc.accept(this); }