Class CreateVisibleSignature2
- java.lang.Object
-
- org.apache.pdfbox.examples.signature.CreateSignatureBase
-
- org.apache.pdfbox.examples.signature.CreateVisibleSignature2
-
- All Implemented Interfaces:
SignatureInterface
public class CreateVisibleSignature2 extends CreateSignatureBase
This is a second example for visual signing a pdf. It doesn't use the "design pattern" influenced PDVisibleSignDesigner, and doesn't create its complex multilevel forms described in the Adobe document Digital Signature Appearances, because this isn't required by the PDF specification. See the discussion in December 2017 in PDFBOX-3198.
-
-
Field Summary
Fields Modifier and Type Field Description private java.io.FileimageFileprivate booleanlateExternalSigningprivate SignatureOptionssignatureOptions
-
Constructor Summary
Constructors Constructor Description CreateVisibleSignature2(java.security.KeyStore keystore, char[] pin)Initialize the signature creator with a keystore (pkcs12) and pin that should be used for the signature.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private PDRectanglecreateSignatureRectangle(PDDocument doc, java.awt.geom.Rectangle2D humanRect)private java.io.InputStreamcreateVisualSignatureTemplate(PDDocument srcDoc, int pageNum, PDRectangle rect, PDSignature signature)private PDSignaturefindExistingSignature(PDAcroForm acroForm, java.lang.String sigFieldName)java.io.FilegetImageFile()booleanisLateExternalSigning()static voidmain(java.lang.String[] args)Arguments are [0] key store [1] pin [2] document that will be signed [3] image of visible signaturevoidsetImageFile(java.io.File imageFile)voidsetLateExternalSigning(boolean lateExternalSigning)Set late external signing.voidsignPDF(java.io.File inputFile, java.io.File signedFile, java.awt.geom.Rectangle2D humanRect, java.lang.String tsaUrl)Sign pdf file and create new file that ends with "_signed.pdf".voidsignPDF(java.io.File inputFile, java.io.File signedFile, java.awt.geom.Rectangle2D humanRect, java.lang.String tsaUrl, java.lang.String signatureFieldName)Sign pdf file and create new file that ends with "_signed.pdf".private static voidusage()This will print the usage for this program.-
Methods inherited from class org.apache.pdfbox.examples.signature.CreateSignatureBase
getCertificateChain, isExternalSigning, setCertificateChain, setExternalSigning, setPrivateKey, setTsaUrl, sign
-
-
-
-
Field Detail
-
signatureOptions
private SignatureOptions signatureOptions
-
lateExternalSigning
private boolean lateExternalSigning
-
imageFile
private java.io.File imageFile
-
-
Constructor Detail
-
CreateVisibleSignature2
public CreateVisibleSignature2(java.security.KeyStore keystore, char[] pin) throws java.security.KeyStoreException, java.security.UnrecoverableKeyException, java.security.NoSuchAlgorithmException, java.io.IOException, java.security.cert.CertificateExceptionInitialize the signature creator with a keystore (pkcs12) and pin that should be used for the signature.- Parameters:
keystore- is a pkcs12 keystore.pin- is the pin for the keystore / private key- Throws:
java.security.KeyStoreException- if the keystore has not been initialized (loaded)java.security.NoSuchAlgorithmException- if the algorithm for recovering the key cannot be foundjava.security.UnrecoverableKeyException- if the given password is wrongjava.security.cert.CertificateException- if the certificate is not valid as signing timejava.io.IOException- if no certificate could be found
-
-
Method Detail
-
getImageFile
public java.io.File getImageFile()
-
setImageFile
public void setImageFile(java.io.File imageFile)
-
isLateExternalSigning
public boolean isLateExternalSigning()
-
setLateExternalSigning
public void setLateExternalSigning(boolean lateExternalSigning)
Set late external signing. Enable this if you want to activate the demo code where the signature is kept and added in an extra step without using PDFBox methods. This is disabled by default.- Parameters:
lateExternalSigning-
-
signPDF
public void signPDF(java.io.File inputFile, java.io.File signedFile, java.awt.geom.Rectangle2D humanRect, java.lang.String tsaUrl) throws java.io.IOExceptionSign pdf file and create new file that ends with "_signed.pdf".- Parameters:
inputFile- The source pdf document file.signedFile- The file to be signed.humanRect- rectangle from a human viewpoint (coordinates start at top left)tsaUrl- optional TSA url- Throws:
java.io.IOException
-
signPDF
public void signPDF(java.io.File inputFile, java.io.File signedFile, java.awt.geom.Rectangle2D humanRect, java.lang.String tsaUrl, java.lang.String signatureFieldName) throws java.io.IOExceptionSign pdf file and create new file that ends with "_signed.pdf".- Parameters:
inputFile- The source pdf document file.signedFile- The file to be signed.humanRect- rectangle from a human viewpoint (coordinates start at top left)tsaUrl- optional TSA urlsignatureFieldName- optional name of an existing (unsigned) signature field- Throws:
java.io.IOException
-
createSignatureRectangle
private PDRectangle createSignatureRectangle(PDDocument doc, java.awt.geom.Rectangle2D humanRect)
-
createVisualSignatureTemplate
private java.io.InputStream createVisualSignatureTemplate(PDDocument srcDoc, int pageNum, PDRectangle rect, PDSignature signature) throws java.io.IOException
- Throws:
java.io.IOException
-
findExistingSignature
private PDSignature findExistingSignature(PDAcroForm acroForm, java.lang.String sigFieldName)
-
main
public static void main(java.lang.String[] args) throws java.security.KeyStoreException, java.security.cert.CertificateException, java.io.IOException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyExceptionArguments are [0] key store [1] pin [2] document that will be signed [3] image of visible signature- Parameters:
args-- Throws:
java.security.KeyStoreExceptionjava.security.cert.CertificateExceptionjava.io.IOExceptionjava.security.NoSuchAlgorithmExceptionjava.security.UnrecoverableKeyException
-
usage
private static void usage()
This will print the usage for this program.
-
-