Merge remote-tracking branch 'origin/develop' into feature/pdf-redact

This commit is contained in:
Svetlana Kulikova
2025-08-04 11:54:40 +03:00
47 changed files with 498 additions and 211 deletions

View File

@ -1491,8 +1491,13 @@ CAnnotWidget::CAnnotWidget(PDFDoc* pdfDoc, AcroFormField* pField, int nStartRefI
m_sT = DictLookupString(&oField, "T", 18);
m_sFullName = m_sT;
// 20 - OO метаданные форм - OMetadata
m_sOMetadata = DictLookupString(&oField, "OMetadata", 20);
// 21 - MEOptions
if (oField.dictLookup("MEOptions", &oObj)->isInt())
{
m_unFlags |= (1 << 21);
m_unMEOptions = oObj.getInt();
}
oObj.free();
// Action - A
Object oAction;
@ -2411,7 +2416,7 @@ CAnnotStamp::CAnnotStamp(PDFDoc* pdfDoc, Object* oAnnotRef, int nPageIndex, int
else
sy = (m_pRect[3] - m_pRect[1]) / (formYMax - formYMin);
double tx = -formXMin * sx + m_pRect[0];
double ty = -formYMin * sy + m_pRect[1];
double ty = -formYMin * sy - m_pRect[3] + m_dHeight;
m[0] *= sx;
m[1] *= sy;
@ -2882,6 +2887,14 @@ void CAnnots::getParents(PDFDoc* pdfDoc, Object* oFieldRef, int nStartRefID)
}
oObj.free();
// 11 - MEOptions
if (oField.dictLookup("MEOptions", &oObj)->isInt())
{
pAnnotParent->unFlags |= (1 << 11);
pAnnotParent->unMEOptions = oObj.getInt();
}
oObj.free();
m_arrParents.push_back(pAnnotParent);
Object oParentRefObj;
@ -3317,6 +3330,16 @@ CAnnot::CAnnot(PDFDoc* pdfDoc, AcroFormField* pField, int nStartRefID)
delete s;
}
oObj.free();
// 9 - OO метаданные форм - OMetadata
if (pField->fieldLookup("OMetadata", &oObj)->isString())
{
m_unAFlags |= (1 << 9);
TextString* s = new TextString(oObj.getString());
m_sOMetadata = NSStringExt::CConverter::GetUtf8FromUTF32(s->getUnicode(), s->getLength());
delete s;
}
oObj.free();
}
CAnnot::CAnnot(PDFDoc* pdfDoc, Object* oAnnotRef, int nPageIndex, int nStartRefID)
{
@ -3444,6 +3467,9 @@ CAnnot::CAnnot(PDFDoc* pdfDoc, Object* oAnnotRef, int nPageIndex, int nStartRefI
}
oObj.free();
// 9 - OO метаданные форм - OMetadata
m_sOMetadata = DictLookupString(&oAnnot, "OMetadata", 9);
oAnnot.free();
}
CAnnot::~CAnnot()
@ -3920,6 +3946,8 @@ void CAnnots::CAnnotParent::ToWASM(NSWasm::CData& oRes)
oRes.AddInt(unMaxLen);
if (unFlags & (1 << 10))
oRes.WriteString(sTU);
if (unFlags & (1 << 11))
oRes.AddInt(unMEOptions);
}
void CAnnot::ToWASM(NSWasm::CData& oRes)
{
@ -3950,6 +3978,8 @@ void CAnnot::ToWASM(NSWasm::CData& oRes)
oRes.WriteString(m_sM);
if (m_unAFlags & (1 << 7))
oRes.WriteString(m_sOUserID);
if (m_unAFlags & (1 << 9))
oRes.WriteString(m_sOMetadata);
}
void CAnnot::CBorderType::ToWASM(NSWasm::CData& oRes)
{
@ -4015,8 +4045,8 @@ void CAnnotWidget::ToWASM(NSWasm::CData& oRes)
oRes.WriteString(m_sT);
if (m_unFlags & (1 << 19))
oRes.WriteString(m_sButtonFontName);
if (m_unFlags & (1 << 20))
oRes.WriteString(m_sOMetadata);
if (m_unFlags & (1 << 21))
oRes.AddInt(m_unMEOptions);
oRes.AddInt(m_arrAction.size());
for (int i = 0; i < m_arrAction.size(); ++i)
{

View File

@ -204,6 +204,7 @@ private:
std::string m_sNM; // Уникальное имя
std::string m_sM; // Дата последнего изменения
std::string m_sOUserID; // OO User ID
std::string m_sOMetadata; // OO метаданные формы
std::vector<double> m_arrC; // Специальный цвет
CBorderType* m_pBorder; // Граница
};
@ -241,6 +242,7 @@ private:
unsigned int m_unR; // Поворот аннотации относительно страницы - R
unsigned int m_unRefNumParent; // Номер ссылки на объект родителя
unsigned int m_unFontStyle; // Стиль шрифта - из DA
unsigned int m_unMEOptions; // MEOptions
double m_dFontSize; // Размер шрифта - из DA
std::vector<double> m_arrTC; // Цвет текста - из DA
std::vector<double> m_arrBC; // Цвет границ - BC
@ -255,7 +257,6 @@ private:
std::string m_sFontKey; // Уникальный идентификатор шрифта
std::string m_sFullName; // Полное имя поля
std::string m_sFontName; // Имя шрифта - из DA
std::string m_sOMetadata; // OO метаданные формы
std::string m_sActualFontName; // Имя замененного шрифта
std::string m_sButtonFontName; // Имя шрифта кнопки
};
@ -661,6 +662,7 @@ private:
unsigned int unRefNum; // Номер ссылки на объект
unsigned int unMaxLen; // Ограничение на максимальную длину text field
unsigned int unFieldFlag; // Флаг Ff
unsigned int unMEOptions; // MEOptions
unsigned int unRefNumParent; // Номер ссылки на объект родителя
std::vector<int> arrI;
std::vector<std::string> arrV;