MergePages SplitPages commands

This commit is contained in:
Svetlana Kulikova
2025-02-20 17:39:10 +03:00
parent f9662752f7
commit 49a40fa841
5 changed files with 40 additions and 11 deletions

View File

@ -151,6 +151,8 @@ namespace NSOnlineOfficeBinToPdf
RemovePage = 2,
WidgetInfo = 3,
MovePage = 4,
MergePages = 5,
SplitPages = 6,
Undefined = 255
};
@ -175,7 +177,7 @@ namespace NSOnlineOfficeBinToPdf
int nLen = oReader.ReadInt();
AddCommandType CommandType = (AddCommandType)oReader.ReadByte();
int nPageNum = 0;
if (CommandType != AddCommandType::WidgetInfo)
if (CommandType != AddCommandType::WidgetInfo && CommandType != AddCommandType::MergePages && CommandType != AddCommandType::SplitPages)
nPageNum = oReader.ReadInt();
if (nPageNum < 0)
@ -210,6 +212,33 @@ namespace NSOnlineOfficeBinToPdf
pPdf->DeletePage(nPageNum);
break;
}
case AddCommandType::MergePages:
{
std::wstring wsPath = oReader.ReadString();
std::wstring wsPassword = oReader.ReadString();
int nLength = oReader.ReadInt();
int* pPageIndex = new int[nLength];
int* pPositions = new int[nLength];
for (int i = 0; i < nLength; ++i)
{
pPageIndex[i] = oReader.ReadInt();
pPositions[i] = oReader.ReadInt();
}
pPdf->MergePages(wsPath, wsPassword, pPageIndex, nLength, pPositions);
delete[] pPageIndex;
delete[] pPositions;
break;
}
case AddCommandType::SplitPages:
{
int nLength = oReader.ReadInt();
int* pPageIndex = new int[nLength];
for (int i = 0; i < nLength; ++i)
pPageIndex[i] = oReader.ReadInt();
pPdf->SplitPages(pPageIndex, nLength);
delete[] pPageIndex;
break;
}
case AddCommandType::WidgetInfo:
{
NSOnlineOfficeBinToPdf::ConvertBufferToRenderer(oReader.GetCurrentBuffer(), (LONG)(nLen - 5) , &oCorrector);