mirror of
https://github.com/qpdf/qpdf.git
synced 2024-12-22 10:58:58 +00:00
Add QPDFAcroFormDocumentHelper::disableDigitalSignatures
This commit is contained in:
parent
2c14be264b
commit
3d33a3a1e3
@ -163,6 +163,11 @@ class QPDFAcroFormDocumentHelper: public QPDFDocumentHelper
|
||||
QPDF_DLL
|
||||
void generateAppearancesIfNeeded();
|
||||
|
||||
// Disable Digital Signature Fields. Remove all digital signature fields from the document,
|
||||
// leaving any annotation showing the content of the field intact.
|
||||
QPDF_DLL
|
||||
void disableDigitalSignatures();
|
||||
|
||||
// Note: this method works on all annotations, not just ones with associated fields. For each
|
||||
// annotation in old_annots, apply the given transformation matrix to create a new annotation.
|
||||
// New annotations are appended to new_annots. If the annotation is associated with a form
|
||||
|
@ -415,6 +415,28 @@ QPDFAcroFormDocumentHelper::generateAppearancesIfNeeded()
|
||||
setNeedAppearances(false);
|
||||
}
|
||||
|
||||
void
|
||||
QPDFAcroFormDocumentHelper::disableDigitalSignatures()
|
||||
{
|
||||
std::set<QPDFObjGen> to_remove;
|
||||
auto fields = getFormFields();
|
||||
for (auto& f: fields) {
|
||||
auto ft = f.getFieldType();
|
||||
if (ft == "/Sig") {
|
||||
auto oh = f.getObjectHandle();
|
||||
to_remove.insert(oh.getObjGen());
|
||||
// Make this no longer a form field. If it's also an annotation, the annotation will
|
||||
// survive. If it's only a field and is no longer referenced, it will disappear.
|
||||
oh.removeKey("/FT");
|
||||
// Remove fields that are specific to signature fields.
|
||||
oh.removeKey("/V");
|
||||
oh.removeKey("/SV");
|
||||
oh.removeKey("/Lock");
|
||||
}
|
||||
}
|
||||
removeFormFields(to_remove);
|
||||
}
|
||||
|
||||
void
|
||||
QPDFAcroFormDocumentHelper::adjustInheritedFields(
|
||||
QPDFObjectHandle obj,
|
||||
|
Loading…
Reference in New Issue
Block a user