Package com.lowagie.text.pdf
Class PdfSignatureAppearance
java.lang.Object
com.lowagie.text.pdf.PdfSignatureAppearance
This class takes care of the cryptographic options and appearances that form a signature.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static class
static interface
An interface to retrieve the signature dictionary for modification. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate boolean
Holds value of property acro6Layers.private final PdfTemplate[]
private byte[]
private int
private Certificate[]
private int
static final int
static final int
static final int
static final int
private String
Holds value of property contact.private CRL[]
private PdfDictionary
private String
private Map
<PdfName, PdfLiteral> private byte[]
private byte[]
private String
private PdfName
private PdfTemplate
private Image
Holds value of property image.private float
Holds value of property imageScale.private Font
Holds value of property layer2Font.private String
private String
Holds value of property layer4Text.private String
private static final float
private boolean
static final int
private OutputStream
private int
private Rectangle
private boolean
private PrivateKey
private String
static final String
Commands to draw a yellow question mark in a stream contentprivate RandomAccessFile
private long[]
private String
private Rectangle
private int
private int
Holds value of property runDirection.static final PdfName
The self signed filter.Holds value of property signatureEvent.private Image
static final int
The rendering mode is just the descriptionstatic final int
The rendering mode is an image and the descriptionstatic final int
The rendering mode is an image and the descriptionstatic final int
The rendering mode is the name of the signer and the descriptionprivate Calendar
private ByteBuffer
private PdfSigGenericPKCS
private PdfStamper
private File
private static final float
static final PdfName
The VeriSign filter.static final PdfName
The Windows Certificate Security.private final PdfStamperImp
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
addDocMDP
(PdfDictionary crypto) void
close
(PdfDictionary update) This is the last method to be called when using external signatures.static float
Fits the text to some rectangle adjusting the font size as needed.Gets the main appearance layer.int
Gets the certified status of this document.Gets the signing contact.CRL[]
Gets the certificate revocation list.Gets the user made signature dictionary.Gets the field name.Gets the filter used to sign the document.getImage()
Gets the background image for the layer 2.float
Gets the scaling to be applied to the background image.getLayer
(int layer) Gets a template layer to create a signature appearance.Gets the n2 and n4 layer font.Gets the signature text identifying the signer if set by setLayer2Text().Gets the text identifying the signature status if set by setLayer4Text().Gets the signing location or null if not set.final String
Gets a new signature fied name that doesn't clash with any existing name.(package private) OutputStream
int
getPage()
Gets the page number of the field.Gets the rectangle that represent the position and dimension of the signature in the page.Gets the private key.Returns the Cryptographic Service Provider that will sign the document.Gets the document bytes that are hashable when using external signatures.Gets the signing reason or null if not set.getRect()
Gets the rectangle representing the signature dimensions.int
Gets the rendering mode for this signature.int
Gets the run direction.Getter for property signatureEvent.Gets the Image object to render.Gets the signature date.Gets the signature date.(package private) ByteBuffer
Gets the instance of the standard signature dictionary.Gets thePdfStamper
associated with this instance.Gets the temporary file.Gets the template that aggregates all appearance layers.boolean
Gets the Acrobat 6.0 layer mode.boolean
Gets the visibility status of the signature.boolean
Checks if a new field was created.boolean
Checks if the document is in the process of closing.void
preClose()
This is the first method to be called when using external signatures.void
This is the first method to be called when using external signatures.void
setAcro6Layers
(boolean acro6Layers) Acrobat 6.0 and higher recommends that only layer n2 and n4 be present.void
setCertificationLevel
(int certificationLevel) Sets the document type to certified instead of simply signed.void
setContact
(String contact) Sets the signing contact.void
setCrypto
(PrivateKey privKey, Certificate[] certChain, CRL[] crlList, PdfName filter) Sets the cryptographic parameters.void
setCrypto
(PrivateKey privKey, X509Certificate certificate, CRL crl, PdfName filter) Sets the cryptographic parameters.void
setCryptoDictionary
(PdfDictionary cryptoDictionary) Sets a user made signature dictionary.void
setExternalDigest
(byte[] digest, byte[] RSAdata, String digestEncryptionAlgorithm) Sets the digest/signature to an external calculated value.void
setFieldNameForInvisibleSignatures
(String fieldName) Sets the field name for a new invisible signature fieldvoid
Sets the background image for the layer 2.void
setImageScale
(float imageScale) Sets the scaling to be applied to the background image.void
setLayer2Font
(Font layer2Font) Sets the n2 and n4 layer font.void
setLayer2Text
(String text) Sets the signature text identifying the signer.void
setLayer4Text
(String text) Sets the text identifying the signature status.void
setLocation
(String location) Sets the signing location.(package private) void
setOriginalout
(OutputStream originalout) void
setProvider
(String provider) Sets the Cryptographic Service Provider that will sign the document.void
Sets the signing reason.void
setRender
(int render) Sets the rendering mode for this signature.void
setRunDirection
(int runDirection) Sets the run direction in the n2 and n4 layer.void
setSignatureEvent
(PdfSignatureAppearance.SignatureEvent signatureEvent) Sets the signature event to allow modification of the signature dictionary.void
setSignatureGraphic
(Image signatureGraphic) Sets the Image object to render when Render is set toSignatureRenderGraphicAndDescription
void
setSignDate
(Calendar signDate) Sets the signature date.(package private) void
setSigout
(ByteBuffer sigout) (package private) void
setStamper
(PdfStamper stamper) (package private) void
setTempFile
(File tempFile) void
setVisibleSignature
(Rectangle pageRect, int page) void
setVisibleSignature
(Rectangle pageRect, int page, String fieldName) Sets the signature to be visible.void
setVisibleSignature
(String fieldName) Sets the signature to be visible.
-
Field Details
-
SignatureRenderDescription
public static final int SignatureRenderDescriptionThe rendering mode is just the description- See Also:
-
SignatureRenderNameAndDescription
public static final int SignatureRenderNameAndDescriptionThe rendering mode is the name of the signer and the description- See Also:
-
SignatureRenderGraphicAndDescription
public static final int SignatureRenderGraphicAndDescriptionThe rendering mode is an image and the description- See Also:
-
SignatureRenderGraphic
public static final int SignatureRenderGraphicThe rendering mode is an image and the description- See Also:
-
SELF_SIGNED
The self signed filter. -
VERISIGN_SIGNED
The VeriSign filter. -
WINCER_SIGNED
The Windows Certificate Security. -
NOT_CERTIFIED
public static final int NOT_CERTIFIED- See Also:
-
CERTIFIED_ALL_CHANGES_ALLOWED
public static final int CERTIFIED_ALL_CHANGES_ALLOWED- See Also:
-
CERTIFIED_NO_CHANGES_ALLOWED
public static final int CERTIFIED_NO_CHANGES_ALLOWED- See Also:
-
CERTIFIED_FORM_FILLING
public static final int CERTIFIED_FORM_FILLING- See Also:
-
CERTIFIED_FORM_FILLING_AND_ANNOTATIONS
public static final int CERTIFIED_FORM_FILLING_AND_ANNOTATIONS- See Also:
-
questionMark
Commands to draw a yellow question mark in a stream content- See Also:
-
TOP_SECTION
private static final float TOP_SECTION- See Also:
-
MARGIN
private static final float MARGIN- See Also:
-
app
-
writer
-
rect
-
pageRect
-
frm
-
layer2Text
-
reason
-
location
-
signDate
-
provider
-
page
private int page -
fieldName
-
privKey
-
crlList
-
filter
-
newField
private boolean newField -
sigout
-
originalout
-
tempFile
-
cryptoDictionary
-
stamper
-
preClosed
private boolean preClosed -
sigStandard
-
range
private long[] range -
raf
-
bout
private byte[] bout -
boutLen
private int boutLen -
externalDigest
private byte[] externalDigest -
externalRSAdata
private byte[] externalRSAdata -
digestEncryptionAlgorithm
-
exclusionLocations
-
certChain
-
render
private int render -
signatureGraphic
-
contact
Holds value of property contact. -
layer2Font
Holds value of property layer2Font. -
layer4Text
Holds value of property layer4Text. -
acro6Layers
private boolean acro6LayersHolds value of property acro6Layers. -
runDirection
private int runDirectionHolds value of property runDirection. -
signatureEvent
Holds value of property signatureEvent. -
image
Holds value of property image. -
imageScale
private float imageScaleHolds value of property imageScale. -
certificationLevel
private int certificationLevel
-
-
Constructor Details
-
PdfSignatureAppearance
PdfSignatureAppearance(PdfStamperImp writer)
-
-
Method Details
-
fitText
public static float fitText(Font font, 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
-
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
,SignatureRenderNameAndDescription
orSignatureRenderGraphicAndDescription
. The two last modes should be used with Acrobat 6 layer type.- Parameters:
render
- the render mode
-
getSignatureGraphic
Gets the Image object to render.- Returns:
- the image
-
setSignatureGraphic
Sets the Image object to render when Render is set toSignatureRenderGraphicAndDescription
- Parameters:
signatureGraphic
- image rendered. Ifnull
the mode is defaulted toSignatureRenderDescription
-
getLayer2Text
Gets the signature text identifying the signer if set by setLayer2Text().- Returns:
- the signature text identifying the signer
-
setLayer2Text
Sets the signature text identifying the signer.- Parameters:
text
- the signature text identifying the signer. Ifnull
or not set a standard description will be used
-
getLayer4Text
Gets the text identifying the signature status if set by setLayer4Text().- Returns:
- the text identifying the signature status
-
setLayer4Text
Sets the text identifying the signature status.- Parameters:
text
- the text identifying the signature status. Ifnull
or not set the description "Signature Not Verified" will be used
-
getRect
Gets the rectangle representing the signature dimensions.- Returns:
- the rectangle representing the signature dimensions. It may be
null
or 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
Sets the cryptographic parameters.- Parameters:
privKey
- the private keycertificate
- the certificatecrl
- the certificate revocation list. It may benull
filter
- the cryptographic filter type. It can be SELF_SIGNED, VERISIGN_SIGNED or WINCER_SIGNED
-
setCrypto
Sets the cryptographic parameters.- Parameters:
privKey
- the private keycertChain
- the certification chaincrlList
- the crl listfilter
- the PdfName
-
setVisibleSignature
-
setVisibleSignature
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 ornull
to generate automatically a new field name
-
setVisibleSignature
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
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
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
Gets the main appearance layer.Consult PPKAppearances.pdf for further details.
- Returns:
- the main appearance layer
- Throws:
DocumentException
- on error
-
setExternalDigest
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 benull
if thedigest
is alsonull
. If thedigest
is notnull
then it may be "RSA" or "DSA"
-
getReason
Gets the signing reason or null if not set.- Returns:
- the signing reason
-
setReason
Sets the signing reason.- Parameters:
reason
- the signing reason
-
getLocation
Gets the signing location or null if not set.- Returns:
- the signing location
-
setLocation
Sets the signing location.- Parameters:
location
- the signing location
-
getProvider
Returns the Cryptographic Service Provider that will sign the document. This method might return null if the provider was not set.- Returns:
- provider the name of the provider, for example "SUN", or
null
to use the default provider.
-
setProvider
Sets the Cryptographic Service Provider that will sign the document.- Parameters:
provider
- the name of the provider, for example "SUN", ornull
to use the default provider.
-
getPrivKey
Gets the private key.- Returns:
- the private key
-
getCrlList
Gets the certificate revocation list.- Returns:
- the certificate revocation list
-
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:
true
if a new field was created,false
if 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
Gets the field name.- Returns:
- the field name
-
setFieldNameForInvisibleSignatures
Sets the field name for a new invisible signature field- Parameters:
fieldName
- for the new invisible signature field
-
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
Gets the signature date.- Returns:
- the signature date
-
setSignDate
Sets the signature date.- Parameters:
signDate
- the signature date
-
getSignDateNullSafe
Gets the signature date. If the date is not set the current Date is returned.- Returns:
- the signature date
-
getSigout
ByteBuffer getSigout() -
setSigout
-
getOriginalout
OutputStream getOriginalout() -
setOriginalout
-
getTempFile
Gets the temporary file.- Returns:
- the temporary file or
null
is the document is created in memory
-
setTempFile
-
getNewSigName
Gets a new signature fied name that doesn't clash with any existing name.- Returns:
- a new signature fied name
-
preClose
This 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:
IOException
- on errorDocumentException
- on error
-
preClose
This 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
exclusionSizes
must contain at least thePdfName.CONTENTS
key 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
- aHashMap
with names and sizes to be excluded in the signature calculation. The key is aPdfName
and the value anInteger
. At least thePdfName.CONTENTS
must be present- Throws:
IOException
- on errorDocumentException
- on error
-
close
This is the last method to be called when using external signatures. The general sequence is: preClose(), getDocumentBytes() and close().update
is aPdfDictionary
that must have exactly the same keys as the ones provided inpreClose(Map)
.- Parameters:
update
- aPdfDictionary
with the key/value that will fill the holes defined inpreClose(Map)
- Throws:
DocumentException
- on errorIOException
- on error
-
addDocMDP
-
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
Gets the user made signature dictionary. This is the dictionary at the /V key.- Returns:
- the user made signature dictionary
-
setCryptoDictionary
Sets a user made signature dictionary. This is the dictionary at the /V key.- Parameters:
cryptoDictionary
- a user made signature dictionary
-
getStamper
Gets thePdfStamper
associated with this instance.- Returns:
- the
PdfStamper
associated with this instance
-
setStamper
-
isPreClosed
public boolean isPreClosed()Checks if the document is in the process of closing.- Returns:
true
if the document is in the process of closing,false
otherwise
-
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
Gets the signing contact.- Returns:
- the signing contact
-
setContact
Sets the signing contact.- Parameters:
contact
- the signing contact
-
getLayer2Font
Gets the n2 and n4 layer font.- Returns:
- the n2 and n4 layer font
-
setLayer2Font
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
- iftrue
only the layers n2 and n4 will be present
-
getRunDirection
public int getRunDirection()Gets the run direction.- Returns:
- the run direction
-
setRunDirection
public void setRunDirection(int runDirection) Sets the run direction in the n2 and n4 layer.- Parameters:
runDirection
- the run direction
-
getSignatureEvent
Getter for property signatureEvent.- Returns:
- Value of property signatureEvent.
-
setSignatureEvent
Sets the signature event to allow modification of the signature dictionary.- Parameters:
signatureEvent
- the signature event
-
getImage
Gets the background image for the layer 2.- Returns:
- the background image for the layer 2
-
setImage
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_FILLING
andCERTIFIED_FORM_FILLING_AND_ANNOTATIONS
-