diff --git a/PdfFile/PdfEditor.cpp b/PdfFile/PdfEditor.cpp index e98e242278..d9af63e86d 100644 --- a/PdfFile/PdfEditor.cpp +++ b/PdfFile/PdfEditor.cpp @@ -3172,6 +3172,13 @@ bool CPdfEditor::DeleteAnnot(int nID, Object* oAnnots) PdfWriter::CObjectBase* pObj = m_mObjManager.GetObj(nID); if (pObj) { + if (pObj->GetType() == PdfWriter::object_type_DICT) + { + PdfWriter::CObjectBase* pPopup = ((PdfWriter::CDictObject*)pObj)->Get("Popup"); + int nIDPopup = m_mObjManager.FindObj(pPopup); + m_mObjManager.RemoveObj(nIDPopup); + pDoc->RemoveObj(pPopup); + } m_mObjManager.RemoveObj(nID); pDoc->RemoveObj(pObj); return true; diff --git a/PdfFile/PdfWriter.cpp b/PdfFile/PdfWriter.cpp index bf2aa4f1c8..c56355a43d 100644 --- a/PdfFile/PdfWriter.cpp +++ b/PdfFile/PdfWriter.cpp @@ -2935,7 +2935,7 @@ HRESULT CPdfWriter::EditWidgetParents(NSFonts::IApplicationFonts* pAppFonts, CWi PdfWriter::CCheckBoxWidget* pKid = dynamic_cast(pObj); if (!pKid) continue; - if (pKid->NeedAP_N_Yes()) + if (pKid->NeedAP_N_Yes() && i < pParent->arrOpt.size()) { std::pair PV = pParent->arrOpt[i]; std::wstring sOpt = PV.first.empty() ? PV.second : PV.first;