|
Oracle Fusion Middleware Java API Reference for Oracle Business Intelligence Publisher 11g Release 1 (11.1.1) E22256-01 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object
oracle.xdo.common.pdf.signature.PDFSignature
public class PDFSignature
This provides an API to sign a PDF document. This API requires PrivateKey and X509 RSA Certificates. The PrivateKey is used to sign and the X509 Certificates are used to be embed so that PDF reader can verify if the PDF document is signed properly. DSA certificates are not supported.
[How to sign a PDF document] String inPDF = "/tmp/PDFDigitalSignatureTest_1.pdf"; String outPDF = "/tmp/PDFDigitalSignatureTest_1_signed.pdf"; String pkcs12File = "/tmp/sample.pfx"; try { PDFSignature pdfSignature = new PDFSignature(inPDF, outPDF); Properties props = new Properties(); // adds some properties to props pdfSignature.setConfig(props); pdfSignature.setLocale("en"); pdfSignature.init("password4PKCS12", pkcs12File); // pdfSignature.addSignatureField(1, new float[]{550, 780, 620, 800}, "Signature1"); pdfSignature.sign("Signature1", "I'm the author of this document"); // Once it's signed, the cleanup() method must be called. // Otherwise, some resources will not be released. pdfSignature.cleanup(); } catch(Throwable t) { t.printStackTrace(); } [How to verify a PDF document] String trustedCertPath = "/tmp/trustedRoot.cer"; String inPDF = "/tmp/PDFDocumentToBeVerified.pdf"; try { Vector trustedCerts = new Vector(); trustedCerts.addElement(new File(trustedCertPath)); PDFSignature pdfSignature = new PDFSignature(inPDF); Properties props = new Properties(); // adds some properties to props pdfSignature.setConfig(props); pdfSignature.init(); SignatureFields signFields = pdfSignature.getSignatureFields(); Vector signedFieldNames = signFields.getSignatureFieldNames(); int size = signedFieldNames.size(); for(int i = 0 ; i < size ; i++) { String signFieldName = (String)signedFieldNames.elementAt(i); SignatureField signField = signFields.getSignatureField(signFieldName); boolean isValid = signField.verifyDocument(); StringBuffer logBuffer = new StringBuffer(); logBuffer.append("++++++++++ ").append(signFieldName).append(" ++++++++++\n"); logBuffer.append("Revision : ").append(signField.getRevision()); logBuffer.append(" of ").append(signFields.getTotalRevisions()).append('\n'); logBuffer.append("PDF document portion after signing is "); if(isValid) { logBuffer.append("not "); } else { ; } logBuffer.append("modified.\n"); logBuffer.append("The certificate is "); boolean isCertValid = false; try { isCertValid = signField.verifyCertificates(trustedCerts, null); } catch(XDORuntimeException xdore) { xdore.printStackTrace(); } if(isCertValid) { ; } else { logBuffer.append("not "); } logBuffer.append("verified against the root certificate."); System.out.println(logBuffer.toString()); if(extractRevision) { StringBuffer revFile = new StringBuffer(); revFile.append(inPDF).append(".rev.").append(i).append(".pdf"); FileOutputStream outputStream = new FileOutputStream(revFile.toString()); outputStream.write(signField.extractRevision()); outputStream.close(); } } pdfSignature.cleanup(); } catch(Throwable t) { System.err.println("What's wrong !!!"); t.printStackTrace(); }
Field Summary | |
---|---|
static int |
PDF_SIGNFIELD_UPPER_CENTER |
static int |
PDF_SIGNFIELD_UPPER_LEFT |
static int |
PDF_SIGNFIELD_UPPER_RIGHT |
Constructor Summary | |
---|---|
PDFSignature(java.io.InputStream inPDF) |
|
PDFSignature(java.lang.String inPDF) |
|
PDFSignature(java.lang.String inPDF, java.lang.String outPDF) |
Method Summary | |
---|---|
boolean |
addSignatureField(int pageIndex, float[] coords, java.lang.String signatureFieldName) Creates a signature field and appends it to a PDF document. |
boolean |
addSignatureField(int pageIndex, int location, java.lang.String signatureFieldName, float fieldLength, float fieldHeight) If the fieldLength and fieldHeight value is less than 0, a default value is used. |
void |
cleanup() Cleans up any resources allocated after doing sign() or verify() |
SignatureFields |
getSignatureFields() Returns a SignatureFields instance which can verify signature in a PDF document. |
void |
init() This method is called before verifying signatures in a PDF document. |
void |
init(java.lang.String password, java.lang.String pkcs12File) This method is called before signing a PDF document. |
void |
setConfig(java.util.Properties props) |
void |
setConfig(java.lang.String propName, java.lang.String propValue) Sets property and value. |
void |
setLocale(java.lang.String locale) |
boolean |
sign(java.lang.String signatureFieldName) |
boolean |
sign(java.lang.String signatureFieldName, java.lang.String reason) Signs the signatureFieldName. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int PDF_SIGNFIELD_UPPER_LEFT
public static final int PDF_SIGNFIELD_UPPER_CENTER
public static final int PDF_SIGNFIELD_UPPER_RIGHT
Constructor Detail |
---|
public PDFSignature(java.lang.String inPDF)
inPDF
-public PDFSignature(java.io.InputStream inPDF)
public PDFSignature(java.lang.String inPDF, java.lang.String outPDF)
Method Detail |
---|
public void setLocale(java.lang.String locale)
public SignatureFields getSignatureFields()
PDFSignature pdfSignature = new PDFSignature(inPDF, outPDF); SignatureFields signFields = pdfSignature.getSignatureFields();
public void setConfig(java.lang.String propName, java.lang.String propValue)
pdfSig.setConfig("system-temp-dir", "/tmp");
propValue
-propName
-public void setConfig(java.util.Properties props)
public void init(java.lang.String password, java.lang.String pkcs12File) throws java.lang.IllegalArgumentException, CertificateExpiredException, CertificateNotYetValidException, java.io.IOException
pkcs12File
-password
-java.lang.IllegalArgumentException
CertificateExpiredException
CertificateNotYetValidException
java.io.IOException
public void init() throws java.io.IOException
java.io.IOException
public boolean addSignatureField(int pageIndex, float[] coords, java.lang.String signatureFieldName) throws java.io.IOException
signatureFieldName
-coords
-pageIndex
- it starts with 1. It means that 1 indicates the first page.java.io.IOException
public boolean addSignatureField(int pageIndex, int location, java.lang.String signatureFieldName, float fieldLength, float fieldHeight) throws java.io.IOException
fieldHeight
-fieldLength
-signatureFieldName
-location
-pageIndex
-java.io.IOException
- thrown when a PDF is not accessible or file io problem happens.public boolean sign(java.lang.String signatureFieldName)
public boolean sign(java.lang.String signatureFieldName, java.lang.String reason)
signatureFieldName
-reason
-create
-public void cleanup()
|
Oracle Fusion Middleware Java API Reference for Oracle Business Intelligence Publisher 11g Release 1 (11.1.1) E22256-01 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |