From 0765872295e581ea6ae5a07e12916a552a1543ee Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Thu, 18 Feb 2021 10:20:30 -0500 Subject: Form field for non-widget just returns null --- include/qpdf/QPDFAcroFormDocumentHelper.hh | 4 ++-- libqpdf/QPDFAcroFormDocumentHelper.cc | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/include/qpdf/QPDFAcroFormDocumentHelper.hh b/include/qpdf/QPDFAcroFormDocumentHelper.hh index 8f4f2039..2c22a5da 100644 --- a/include/qpdf/QPDFAcroFormDocumentHelper.hh +++ b/include/qpdf/QPDFAcroFormDocumentHelper.hh @@ -134,8 +134,8 @@ class QPDFAcroFormDocumentHelper: public QPDFDocumentHelper // field dictionary, the underlying object will be the same, but // this is not always the case. Note that if you call this method // with an annotation that is not a widget annotation, there will - // not be an associated field, and this method will raise an - // exception. + // not be an associated field, and this method will return a + // helper associated with a null object (isNull() == true). QPDF_DLL QPDFFormFieldObjectHelper getFieldForAnnotation(QPDFAnnotationObjectHelper); diff --git a/libqpdf/QPDFAcroFormDocumentHelper.cc b/libqpdf/QPDFAcroFormDocumentHelper.cc index ea12f656..0fcc81f6 100644 --- a/libqpdf/QPDFAcroFormDocumentHelper.cc +++ b/libqpdf/QPDFAcroFormDocumentHelper.cc @@ -70,16 +70,14 @@ QPDFFormFieldObjectHelper QPDFAcroFormDocumentHelper::getFieldForAnnotation(QPDFAnnotationObjectHelper h) { QPDFObjectHandle oh = h.getObjectHandle(); + QPDFFormFieldObjectHelper result(QPDFObjectHandle::newNull()); if (! (oh.isDictionary() && oh.getKey("/Subtype").isName() && (oh.getKey("/Subtype").getName() == "/Widget"))) { - throw std::logic_error( - "QPDFAnnotationObjectHelper::getFieldForAnnotation called for" - " non-/Widget annotation"); + return result; } analyze(); - QPDFFormFieldObjectHelper result(QPDFObjectHandle::newNull()); QPDFObjGen og(oh.getObjGen()); if (this->m->annotation_to_field.count(og)) { -- cgit v1.2.3-70-g09d2