- java.lang.Object
-
- com.itextpdf.text.pdf.PdfSignatureAppearance
-
public class PdfSignatureAppearance extends java.lang.ObjectThis class takes care of the cryptographic options and appearances that form a signature.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfacePdfSignatureAppearance.SignatureEventAn interface to retrieve the signature dictionary for modification.
-
Field Summary
Fields Modifier and Type Field Description static intCERTIFIED_FORM_FILLINGstatic intCERTIFIED_FORM_FILLING_AND_ANNOTATIONSstatic intCERTIFIED_NO_CHANGES_ALLOWEDstatic intNOT_CERTIFIEDstatic java.lang.StringquestionMarkCommands to draw a yellow question mark in a stream contentstatic PdfNameSELF_SIGNEDThe self signed filter.static intSignatureRenderDescriptionThe rendering mode is just the descriptionstatic intSignatureRenderGraphicAndDescriptionThe rendering mode is an image and the descriptionstatic intSignatureRenderNameAndDescriptionThe rendering mode is the name of the signer and the descriptionstatic PdfNameVERISIGN_SIGNEDThe VeriSign filter.static PdfNameWINCER_SIGNEDThe Windows Certificate Security.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose(PdfDictionary update)This is the last method to be called when using external signatures.static floatfitText(Font font, java.lang.String text, Rectangle rect, float maxFontSize, int runDirection)Fits the text to some rectangle adjusting the font size as needed.PdfTemplategetAppearance()Gets the main appearance layer.java.security.cert.Certificate[]getCertChain()Gets the certificate chain.intgetCertificationLevel()Gets the certified status of this document.java.lang.StringgetContact()Gets the signing contact.java.security.cert.CRL[]getCrlList()Gets the certificate revocation list.PdfDictionarygetCryptoDictionary()Gets the user made signature dictionary.java.lang.StringgetFieldName()Gets the field name.PdfNamegetFilter()Gets the filter used to sign the document.ImagegetImage()Gets the background image for the layer 2.floatgetImageScale()Gets the scaling to be applied to the background image.PdfTemplategetLayer(int layer)Gets a template layer to create a signature appearance.FontgetLayer2Font()Gets the n2 and n4 layer font.java.lang.StringgetLayer2Text()Gets the signature text identifying the signer if set by setLayer2Text().java.lang.StringgetLayer4Text()Gets the text identifying the signature status if set by setLayer4Text().java.lang.StringgetLocation()Gets the signing location.java.lang.StringgetNewSigName()Gets a new signature fied name that doesn't clash with any existing name.intgetPage()Gets the page number of the field.RectanglegetPageRect()Gets the rectangle that represent the position and dimension of the signature in the page.java.security.PrivateKeygetPrivKey()Gets the private key.java.lang.StringgetProvider()Returns the Cryptographic Service Provider that will sign the document.java.io.InputStreamgetRangeStream()Gets the document bytes that are hashable when using external signatures.java.lang.StringgetReason()Gets the signing reason.RectanglegetRect()Gets the rectangle representing the signature dimensions.intgetRender()Gets the rendering mode for this signature.intgetRunDirection()Gets the run direction.PdfSignatureAppearance.SignatureEventgetSignatureEvent()Getter for property signatureEvent.ImagegetSignatureGraphic()Gets the Image object to render.java.util.CalendargetSignDate()Gets the signature date.PdfSigGenericPKCSgetSigStandard()Gets the instance of the standard signature dictionary.PdfStampergetStamper()Gets thePdfStamperassociated with this instance.java.io.FilegetTempFile()Gets the temporary file.PdfTemplategetTopLayer()Gets the template that aggregates all appearance layers.booleanisAcro6Layers()Gets the Acrobat 6.0 layer mode.booleanisInvisible()Gets the visibility status of the signature.booleanisNewField()Checks if a new field was created.booleanisPreClosed()Checks if the document is in the process of closing.voidpreClose()This is the first method to be called when using external signatures.voidpreClose(java.util.HashMap exclusionSizes)This is the first method to be called when using external signatures.voidsetAcro6Layers(boolean acro6Layers)Acrobat 6.0 and higher recommends that only layer n2 and n4 be present.voidsetCertificationLevel(int certificationLevel)Sets the document type to certified instead of simply signed.voidsetContact(java.lang.String contact)Sets the signing contact.voidsetCrypto(java.security.PrivateKey privKey, java.security.cert.Certificate[] certChain, java.security.cert.CRL[] crlList, PdfName filter)Sets the cryptographic parameters.voidsetCryptoDictionary(PdfDictionary cryptoDictionary)Sets a user made signature dictionary.voidsetExternalDigest(byte[] digest, byte[] RSAdata, java.lang.String digestEncryptionAlgorithm)Sets the digest/signature to an external calculated value.voidsetImage(Image image)Sets the background image for the layer 2.voidsetImageScale(float imageScale)Sets the scaling to be applied to the background image.voidsetLayer2Font(Font layer2Font)Sets the n2 and n4 layer font.voidsetLayer2Text(java.lang.String text)Sets the signature text identifying the signer.voidsetLayer4Text(java.lang.String text)Sets the text identifying the signature status.voidsetLocation(java.lang.String location)Sets the signing location.voidsetProvider(java.lang.String provider)Sets the Cryptographic Service Provider that will sign the document.voidsetReason(java.lang.String reason)Sets the signing reason.voidsetRender(int render)Sets the rendering mode for this signature.voidsetRunDirection(int runDirection)Sets the run direction in the n2 and n4 layer.voidsetSignatureEvent(PdfSignatureAppearance.SignatureEvent signatureEvent)Sets the signature event to allow modification of the signature dictionary.voidsetSignatureGraphic(Image signatureGraphic)Sets the Image object to render when Render is set toSignatureRenderGraphicAndDescriptionvoidsetSignDate(java.util.Calendar signDate)Sets the signature date.voidsetVisibleSignature(Rectangle pageRect, int page, java.lang.String fieldName)Sets the signature to be visible.voidsetVisibleSignature(java.lang.String fieldName)Sets the signature to be visible.
-
-
-
Field Detail
-
SignatureRenderDescription
public static final int SignatureRenderDescription
The rendering mode is just the description- See Also:
- Constant Field Values
-
SignatureRenderNameAndDescription
public static final int SignatureRenderNameAndDescription
The rendering mode is the name of the signer and the description- See Also:
- Constant Field Values
-
SignatureRenderGraphicAndDescription
public static final int SignatureRenderGraphicAndDescription
The rendering mode is an image and the description- See Also:
- Constant Field Values
-
SELF_SIGNED
public static final PdfName SELF_SIGNED
The self signed filter.
-
VERISIGN_SIGNED
public static final PdfName VERISIGN_SIGNED
The VeriSign filter.
-
WINCER_SIGNED
public static final PdfName WINCER_SIGNED
The Windows Certificate Security.
-
NOT_CERTIFIED
public static final int NOT_CERTIFIED
- See Also:
- Constant Field Values
-
CERTIFIED_NO_CHANGES_ALLOWED
public static final int CERTIFIED_NO_CHANGES_ALLOWED
- See Also:
- Constant Field Values
-
CERTIFIED_FORM_FILLING
public static final int CERTIFIED_FORM_FILLING
- See Also:
- Constant Field Values
-
CERTIFIED_FORM_FILLING_AND_ANNOTATIONS
public static final int CERTIFIED_FORM_FILLING_AND_ANNOTATIONS
- See Also:
- Constant Field Values
-
questionMark
public static final java.lang.String questionMark
Commands to draw a yellow question mark in a stream content- See Also:
- Constant Field Values
-
-
Method Detail
-
getRender
public int getRender()
Gets the rendering mode for this signature.- Returns:
- the rendering mode for this signature
-
setRender
public void setRender(int render)
Sets the rendering mode for this signature. The rendering modes can be the constantsSignatureRenderDescription,SignatureRenderNameAndDescriptionorSignatureRenderGraphicAndDescription. The two last modes should be used with Acrobat 6 layer type.- Parameters:
render- the render mode
-
getSignatureGraphic
public Image getSignatureGraphic()
Gets the Image object to render.- Returns:
- the image
-
setSignatureGraphic
public void setSignatureGraphic(Image signatureGraphic)
Sets the Image object to render when Render is set toSignatureRenderGraphicAndDescription- Parameters:
signatureGraphic- image rendered. Ifnullthe mode is defaulted toSignatureRenderDescription
-
setLayer2Text
public void setLayer2Text(java.lang.String text)
Sets the signature text identifying the signer.- Parameters:
text- the signature text identifying the signer. Ifnullor not set a standard description will be used
-
getLayer2Text
public java.lang.String getLayer2Text()
Gets the signature text identifying the signer if set by setLayer2Text().- Returns:
- the signature text identifying the signer
-
setLayer4Text
public void setLayer4Text(java.lang.String text)
Sets the text identifying the signature status.- Parameters:
text- the text identifying the signature status. Ifnullor not set the description "Signature Not Verified" will be used
-
getLayer4Text
public java.lang.String getLayer4Text()
Gets the text identifying the signature status if set by setLayer4Text().- Returns:
- the text identifying the signature status
-
getRect
public Rectangle getRect()
Gets the rectangle representing the signature dimensions.- Returns:
- the rectangle representing the signature dimensions. It may be
nullor have zero width or height for invisible signatures
-
isInvisible
public boolean isInvisible()
Gets the visibility status of the signature.- Returns:
- the visibility status of the signature
-
setCrypto
public void setCrypto(java.security.PrivateKey privKey, java.security.cert.Certificate[] certChain, java.security.cert.CRL[] crlList, PdfName filter)Sets the cryptographic parameters.- Parameters:
privKey- the private keycertChain- the certificate chaincrlList- the certificate revocation list. It may benullfilter- the crytographic filter type. It can be SELF_SIGNED, VERISIGN_SIGNED or WINCER_SIGNED
-
setVisibleSignature
public void setVisibleSignature(Rectangle pageRect, int page, java.lang.String fieldName)
Sets the signature to be visible. It creates a new visible signature field.- Parameters:
pageRect- the position and dimension of the field in the pagepage- the page to place the field. The fist page is 1fieldName- the field name ornullto generate automatically a new field name
-
setVisibleSignature
public void setVisibleSignature(java.lang.String fieldName)
Sets the signature to be visible. An empty signature field with the same name must already exist.- Parameters:
fieldName- the existing empty signature field name
-
getLayer
public PdfTemplate getLayer(int layer)
Gets a template layer to create a signature appearance. The layers can go from 0 to 4.Consult PPKAppearances.pdf for further details.
- Parameters:
layer- the layer- Returns:
- a template
-
getTopLayer
public PdfTemplate getTopLayer()
Gets the template that aggregates all appearance layers. This corresponds to the /FRM resource.Consult PPKAppearances.pdf for further details.
- Returns:
- the template that aggregates all appearance layers
-
getAppearance
public PdfTemplate getAppearance() throws DocumentException
Gets the main appearance layer.Consult PPKAppearances.pdf for further details.
- Returns:
- the main appearance layer
- Throws:
DocumentException- on error
-
fitText
public static float fitText(Font font, java.lang.String text, Rectangle rect, float maxFontSize, int runDirection)
Fits the text to some rectangle adjusting the font size as needed.- Parameters:
font- the font to usetext- the textrect- the rectangle where the text must fitmaxFontSize- the maximum font sizerunDirection- the run direction- Returns:
- the calculated font size that makes the text fit
-
setExternalDigest
public void setExternalDigest(byte[] digest, byte[] RSAdata, java.lang.String digestEncryptionAlgorithm)Sets the digest/signature to an external calculated value.- Parameters:
digest- the digest. This is the actual signatureRSAdata- the extra data that goes into the data tag in PKCS#7digestEncryptionAlgorithm- the encryption algorithm. It may must benullif thedigestis alsonull. If thedigestis notnullthen it may be "RSA" or "DSA"
-
getReason
public java.lang.String getReason()
Gets the signing reason.- Returns:
- the signing reason
-
setReason
public void setReason(java.lang.String reason)
Sets the signing reason.- Parameters:
reason- the signing reason
-
getLocation
public java.lang.String getLocation()
Gets the signing location.- Returns:
- the signing location
-
setLocation
public void setLocation(java.lang.String location)
Sets the signing location.- Parameters:
location- the signing location
-
getProvider
public java.lang.String getProvider()
Returns the Cryptographic Service Provider that will sign the document.- Returns:
- provider the name of the provider, for example "SUN",
or
nullto use the default provider.
-
setProvider
public void setProvider(java.lang.String provider)
Sets the Cryptographic Service Provider that will sign the document.- Parameters:
provider- the name of the provider, for example "SUN", ornullto use the default provider.
-
getPrivKey
public java.security.PrivateKey getPrivKey()
Gets the private key.- Returns:
- the private key
-
getCertChain
public java.security.cert.Certificate[] getCertChain()
Gets the certificate chain.- Returns:
- the certificate chain
-
getCrlList
public java.security.cert.CRL[] getCrlList()
Gets the certificate revocation list.- Returns:
- the certificate revocation list
-
getFilter
public PdfName getFilter()
Gets the filter used to sign the document.- Returns:
- the filter used to sign the document
-
isNewField
public boolean isNewField()
Checks if a new field was created.- Returns:
trueif a new field was created,falseif signing an existing field or if the signature is invisible
-
getPage
public int getPage()
Gets the page number of the field.- Returns:
- the page number of the field
-
getFieldName
public java.lang.String getFieldName()
Gets the field name.- Returns:
- the field name
-
getPageRect
public Rectangle getPageRect()
Gets the rectangle that represent the position and dimension of the signature in the page.- Returns:
- the rectangle that represent the position and dimension of the signature in the page
-
getSignDate
public java.util.Calendar getSignDate()
Gets the signature date.- Returns:
- the signature date
-
setSignDate
public void setSignDate(java.util.Calendar signDate)
Sets the signature date.- Parameters:
signDate- the signature date
-
getTempFile
public java.io.File getTempFile()
Gets the temporary file.- Returns:
- the temporary file or
nullis the document is created in memory
-
getNewSigName
public java.lang.String getNewSigName()
Gets a new signature fied name that doesn't clash with any existing name.- Returns:
- a new signature fied name
-
preClose
public void preClose() throws java.io.IOException, DocumentExceptionThis is the first method to be called when using external signatures. The general sequence is: preClose(), getDocumentBytes() and close().If calling preClose() dont't call PdfStamper.close().
No external signatures are allowed if this method is called.
- Throws:
java.io.IOException- on errorDocumentException- on error
-
preClose
public void preClose(java.util.HashMap exclusionSizes) throws java.io.IOException, DocumentExceptionThis is the first method to be called when using external signatures. The general sequence is: preClose(), getDocumentBytes() and close().If calling preClose() dont't call PdfStamper.close().
If using an external signature
exclusionSizesmust contain at least thePdfName.CONTENTSkey with the size that it will take in the document. Note that due to the hex string coding this size should be byte_size*2+2.- Parameters:
exclusionSizes- aHashMapwith names and sizes to be excluded in the signature calculation. The key is aPdfNameand the value anInteger. At least thePdfName.CONTENTSmust be present- Throws:
java.io.IOException- on errorDocumentException- on error
-
close
public void close(PdfDictionary update) throws java.io.IOException, DocumentException
This is the last method to be called when using external signatures. The general sequence is: preClose(), getDocumentBytes() and close().updateis aPdfDictionarythat must have exactly the same keys as the ones provided inpreClose(HashMap).- Parameters:
update- aPdfDictionarywith the key/value that will fill the holes defined inpreClose(HashMap)- Throws:
DocumentException- on errorjava.io.IOException- on error
-
getRangeStream
public java.io.InputStream getRangeStream()
Gets the document bytes that are hashable when using external signatures. The general sequence is: preClose(), getRangeStream() and close().- Returns:
- the document bytes that are hashable
-
getCryptoDictionary
public PdfDictionary getCryptoDictionary()
Gets the user made signature dictionary. This is the dictionary at the /V key.- Returns:
- the user made signature dictionary
-
setCryptoDictionary
public void setCryptoDictionary(PdfDictionary cryptoDictionary)
Sets a user made signature dictionary. This is the dictionary at the /V key.- Parameters:
cryptoDictionary- a user made signature dictionary
-
getStamper
public PdfStamper getStamper()
Gets thePdfStamperassociated with this instance.- Returns:
- the
PdfStamperassociated with this instance
-
isPreClosed
public boolean isPreClosed()
Checks if the document is in the process of closing.- Returns:
trueif the document is in the process of closing,falseotherwise
-
getSigStandard
public PdfSigGenericPKCS getSigStandard()
Gets the instance of the standard signature dictionary. This instance is only available after pre close.The main use is to insert external signatures.
- Returns:
- the instance of the standard signature dictionary
-
getContact
public java.lang.String getContact()
Gets the signing contact.- Returns:
- the signing contact
-
setContact
public void setContact(java.lang.String contact)
Sets the signing contact.- Parameters:
contact- the signing contact
-
getLayer2Font
public Font getLayer2Font()
Gets the n2 and n4 layer font.- Returns:
- the n2 and n4 layer font
-
setLayer2Font
public void setLayer2Font(Font layer2Font)
Sets the n2 and n4 layer font. If the font size is zero, auto-fit will be used.- Parameters:
layer2Font- the n2 and n4 font
-
isAcro6Layers
public boolean isAcro6Layers()
Gets the Acrobat 6.0 layer mode.- Returns:
- the Acrobat 6.0 layer mode
-
setAcro6Layers
public void setAcro6Layers(boolean acro6Layers)
Acrobat 6.0 and higher recommends that only layer n2 and n4 be present. This method sets that mode.- Parameters:
acro6Layers- iftrueonly the layers n2 and n4 will be present
-
setRunDirection
public void setRunDirection(int runDirection)
Sets the run direction in the n2 and n4 layer.- Parameters:
runDirection- the run direction
-
getRunDirection
public int getRunDirection()
Gets the run direction.- Returns:
- the run direction
-
getSignatureEvent
public PdfSignatureAppearance.SignatureEvent getSignatureEvent()
Getter for property signatureEvent.- Returns:
- Value of property signatureEvent.
-
setSignatureEvent
public void setSignatureEvent(PdfSignatureAppearance.SignatureEvent signatureEvent)
Sets the signature event to allow modification of the signature dictionary.- Parameters:
signatureEvent- the signature event
-
getImage
public Image getImage()
Gets the background image for the layer 2.- Returns:
- the background image for the layer 2
-
setImage
public void setImage(Image image)
Sets the background image for the layer 2.- Parameters:
image- the background image for the layer 2
-
getImageScale
public float getImageScale()
Gets the scaling to be applied to the background image.- Returns:
- the scaling to be applied to the background image
-
setImageScale
public void setImageScale(float imageScale)
Sets the scaling to be applied to the background image. If it's zero the image will fully fill the rectangle. If it's less than zero the image will fill the rectangle but will keep the proportions. If it's greater than zero that scaling will be applied. In any of the cases the image will always be centered. It's zero by default.- Parameters:
imageScale- the scaling to be applied to the background image
-
getCertificationLevel
public int getCertificationLevel()
Gets the certified status of this document.- Returns:
- the certified status
-
setCertificationLevel
public void setCertificationLevel(int certificationLevel)
Sets the document type to certified instead of simply signed.- Parameters:
certificationLevel- the values can be:NOT_CERTIFIED,CERTIFIED_NO_CHANGES_ALLOWED,CERTIFIED_FORM_FILLINGandCERTIFIED_FORM_FILLING_AND_ANNOTATIONS
-
-