From af3e06a4b0ba5fa5963ae8fe8772744f97ea3fcd Mon Sep 17 00:00:00 2001 From: Svetlana Kulikova Date: Fri, 15 Sep 2023 10:36:59 +0300 Subject: [PATCH] Fix get certain appearance --- PdfFile/PdfReader.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/PdfFile/PdfReader.cpp b/PdfFile/PdfReader.cpp index 6beb4e71f8..b8ed46a3e5 100644 --- a/PdfFile/PdfReader.cpp +++ b/PdfFile/PdfReader.cpp @@ -858,8 +858,13 @@ BYTE* CPdfReader::GetAPWidget(int nRasterW, int nRasterH, int nBackgroundColor, for (int i = 0, nNum = pAcroForms->getNumFields(); i < nNum; ++i) { AcroFormField* pField = pAcroForms->getField(i); - if (pField->getPageNum() != nPageIndex + 1 || (nWidget >= 0 && i != nWidget)) + Object oRef; + if (pField->getPageNum() != nPageIndex + 1 || (nWidget >= 0 && pField->getFieldRef(&oRef) && oRef.getRefNum() != nWidget)) + { + oRef.free(); continue; + } + oRef.free(); PdfReader::CAnnotAP* pAP = new PdfReader::CAnnotAP(m_pPDFDocument, m_pFontManager, m_pFontList, nRasterW, nRasterH, nBackgroundColor, nPageIndex, sView, sButtonView, pField); if (pAP) @@ -1366,7 +1371,7 @@ BYTE* CPdfReader::GetAPAnnots(int nRasterW, int nRasterH, int nBackgroundColor, continue; } - if (nAnnot >= 0 && i != nAnnot) + if (nAnnot >= 0 && oAnnotRef.getRefNum() != nAnnot) { oAnnotRef.free(); continue;