use of org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField in project pdfbox by apache.
the class CreateVisibleSignature2 method findExistingSignature.
// Find an existing signature (assumed to be empty). You will usually not need this.
private PDSignature findExistingSignature(PDAcroForm acroForm, String sigFieldName) {
PDSignature signature = null;
PDSignatureField signatureField;
if (acroForm != null) {
signatureField = (PDSignatureField) acroForm.getField(sigFieldName);
if (signatureField != null) {
// retrieve signature dictionary
signature = signatureField.getSignature();
if (signature == null) {
signature = new PDSignature();
// after solving PDFBOX-3524
// signatureField.setValue(signature)
// until then:
signatureField.getCOSObject().setItem(COSName.V, signature);
} else {
throw new IllegalStateException("The signature field " + sigFieldName + " is already signed.");
}
}
}
return signature;
}
use of org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField in project tika by apache.
the class AbstractPDF2XHTML method addFieldString.
private void addFieldString(PDField field) throws SAXException {
//Pick partial name to present in content and altName for attribute
//Ignoring FullyQualifiedName for now
String partName = field.getPartialName();
String altName = field.getAlternateFieldName();
StringBuilder sb = new StringBuilder();
AttributesImpl attrs = new AttributesImpl();
if (partName != null) {
sb.append(partName).append(": ");
}
if (altName != null) {
attrs.addAttribute("", "altName", "altName", "CDATA", altName);
}
//return early if PDSignature field
if (field instanceof PDSignatureField) {
handleSignature(attrs, (PDSignatureField) field);
return;
}
String value = field.getValueAsString();
if (value != null && !value.equals("null")) {
sb.append(value);
}
if (attrs.getLength() > 0 || sb.length() > 0) {
xhtml.startElement("li", attrs);
xhtml.characters(sb.toString());
xhtml.endElement("li");
}
}
use of org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField in project pdfbox by apache.
the class CreateVisibleSignature method findExistingSignature.
// Find an existing signature (assumed to be empty). You will usually not need this.
private PDSignature findExistingSignature(PDDocument doc, String sigFieldName) {
PDSignature signature = null;
PDSignatureField signatureField;
PDAcroForm acroForm = doc.getDocumentCatalog().getAcroForm();
if (acroForm != null) {
signatureField = (PDSignatureField) acroForm.getField(sigFieldName);
if (signatureField != null) {
// retrieve signature dictionary
signature = signatureField.getSignature();
if (signature == null) {
signature = new PDSignature();
// after solving PDFBOX-3524
// signatureField.setValue(signature)
// until then:
signatureField.getCOSObject().setItem(COSName.V, signature);
} else {
throw new IllegalStateException("The signature field " + sigFieldName + " is already signed.");
}
}
}
return signature;
}
use of org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField in project pdfbox by apache.
the class PDDocument method addSignatureField.
/**
* This will add a list of signature fields to the document.
*
* @param sigFields are the PDSignatureFields that should be added to the document
* @param signatureInterface is a interface which provides signing capabilities
* @param options signature options
* @throws IOException if there is an error creating required fields
*/
public void addSignatureField(List<PDSignatureField> sigFields, SignatureInterface signatureInterface, SignatureOptions options) throws IOException {
PDDocumentCatalog catalog = getDocumentCatalog();
catalog.getCOSObject().setNeedToBeUpdated(true);
PDAcroForm acroForm = catalog.getAcroForm();
if (acroForm == null) {
acroForm = new PDAcroForm(this);
catalog.setAcroForm(acroForm);
}
COSDictionary acroFormDict = acroForm.getCOSObject();
acroFormDict.setDirect(true);
acroFormDict.setNeedToBeUpdated(true);
if (!acroForm.isSignaturesExist()) {
// 1 if at least one signature field is available
acroForm.setSignaturesExist(true);
}
List<PDField> acroformFields = acroForm.getFields();
for (PDSignatureField sigField : sigFields) {
sigField.getCOSObject().setNeedToBeUpdated(true);
// Check if the field already exists
boolean checkSignatureField = checkSignatureField(acroForm.getFieldIterator(), sigField);
if (checkSignatureField) {
sigField.getCOSObject().setNeedToBeUpdated(true);
} else {
acroformFields.add(sigField);
}
// Check if we need to add a signature
if (sigField.getSignature() != null) {
sigField.getCOSObject().setNeedToBeUpdated(true);
if (options == null) {
// TODO ??
}
addSignature(sigField.getSignature(), signatureInterface, options);
}
}
}
use of org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField in project pdfbox by apache.
the class PDDocument method getSignatureFields.
/**
* Retrieve all signature fields from the document.
*
* @return a <code>List</code> of <code>PDSignatureField</code>s
*/
public List<PDSignatureField> getSignatureFields() {
List<PDSignatureField> fields = new ArrayList<>();
PDAcroForm acroForm = getDocumentCatalog().getAcroForm();
if (acroForm != null) {
for (PDField field : acroForm.getFieldTree()) {
if (field instanceof PDSignatureField) {
fields.add((PDSignatureField) field);
}
}
}
return fields;
}
Aggregations