poppler/Annot.cc | 2 +- poppler/Form.cc | 2 +- poppler/PDFDoc.cc | 14 ++++++-------- poppler/SignatureHandler.cc | 6 +++++- 4 files changed, 13 insertions(+), 11 deletions(-)
New commits: commit 5c3cbea4044fed263fe5e34d911e9db85d55bdf4 Author: Erich E. Hoover <[email protected]> Date: Thu Aug 4 10:31:16 2022 -0600 SignatureHandler: Fix getSignerName when signing_cert is available but CMSSignerInfo is not diff --git a/poppler/SignatureHandler.cc b/poppler/SignatureHandler.cc index 3d5494c2..729c2b15 100644 --- a/poppler/SignatureHandler.cc +++ b/poppler/SignatureHandler.cc @@ -525,7 +525,11 @@ std::string SignatureHandler::getSignerName() { char *commonName; - if (!CMSSignerInfo || !NSS_IsInitialized()) { + if (!NSS_IsInitialized()) { + return {}; + } + + if (!signing_cert && !CMSSignerInfo) { return {}; } commit 8452b0dee6b5267e785bf6dea4d7b537a4cfb637 Author: Erich E. Hoover <[email protected]> Date: Sat Jul 30 15:40:08 2022 -0600 Form: When signing with an appearance, ensure that a Form exists diff --git a/poppler/Form.cc b/poppler/Form.cc index 3657c03e..4dfba6dd 100644 --- a/poppler/Form.cc +++ b/poppler/Form.cc @@ -696,7 +696,7 @@ bool FormWidgetSignature::signDocumentWithAppearance(const char *saveFilename, c GooString *aux = getField()->getDefaultAppearance(); std::string originalDefaultAppearance = aux ? aux->toStr() : std::string(); - Form *form = doc->getCatalog()->getForm(); + Form *form = doc->getCatalog()->getCreateForm(); std::string pdfFontName = form->findFontInDefaultResources("Helvetica", ""); if (pdfFontName.empty()) { pdfFontName = form->addFontToDefaultResources("Helvetica", "").fontName; commit 2beb458226509c3babd78e658e1a8ac72ccfb2b8 Author: Erich E. Hoover <[email protected]> Date: Sat Jul 30 10:27:23 2022 -0600 Annot: Fix applying signatures to fields that are not part of a form diff --git a/poppler/Annot.cc b/poppler/Annot.cc index c617461a..04b82ba0 100644 --- a/poppler/Annot.cc +++ b/poppler/Annot.cc @@ -5261,7 +5261,7 @@ void AnnotAppearanceBuilder::drawSignatureFieldText(const GooString &text, const const double textwidth = width - 2 * textmargin; // create a Helvetica fake font - std::shared_ptr<const GfxFont> font = form->getDefaultResources()->lookupFont(da.getFontName().getName()); + std::shared_ptr<const GfxFont> font = form ? form->getDefaultResources()->lookupFont(da.getFontName().getName()) : nullptr; if (!font) { font = createAnnotDrawFont(xref, resourcesDict, da.getFontName().getName()); } commit 977dd2171fc3cf91d4a9d5855e379c39df8ee77e Author: Erich E. Hoover <[email protected]> Date: Fri Jul 29 17:04:36 2022 -0600 PDFDoc: Fix finding signature fields not associated with a form diff --git a/poppler/PDFDoc.cc b/poppler/PDFDoc.cc index faab87ac..05cc04a5 100644 --- a/poppler/PDFDoc.cc +++ b/poppler/PDFDoc.cc @@ -565,14 +565,12 @@ std::vector<FormFieldSignature *> PDFDoc::getSignatureFields() // First search const Form *f = catalog->getForm(); - if (!f) { - return res; - } - - const int nRootFields = f->getNumFields(); - for (int i = 0; i < nRootFields; ++i) { - FormField *ff = f->getRootField(i); - addSignatureFieldsToVector(ff, res); + if (f) { + const int nRootFields = f->getNumFields(); + for (int i = 0; i < nRootFields; ++i) { + FormField *ff = f->getRootField(i); + addSignatureFieldsToVector(ff, res); + } } // Second search
