mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-02-10 18:05:41 +08:00
Fix actual pos MovePage
This commit is contained in:
@ -203,9 +203,6 @@ namespace NSOnlineOfficeBinToPdf
|
||||
{
|
||||
int nPos = oReader.ReadInt();
|
||||
pPdf->MovePage(nPageNum, nPos);
|
||||
|
||||
NSOnlineOfficeBinToPdf::ConvertBufferToRenderer(oReader.GetCurrentBuffer(), (LONG)(nLen - 13) , &oCorrector);
|
||||
oReader.Skip(nLen - 13);
|
||||
break;
|
||||
}
|
||||
case AddCommandType::RemovePage:
|
||||
|
||||
@ -895,14 +895,15 @@ void CPdfEditor::GetPageTree(XRef* xref, Object* pPagesRefObj, PdfWriter::CPageT
|
||||
}
|
||||
kidsArrObj.free();
|
||||
}
|
||||
bool CPdfEditor::EditPage(int nPageIndex, bool bSet, int nNewPage)
|
||||
bool CPdfEditor::EditPage(int nPageIndex, bool bSet, bool bActualPos)
|
||||
{
|
||||
PDFDoc* pPDFDocument = pReader->GetPDFDocument();
|
||||
PdfWriter::CDocument* pDoc = pWriter->GetDocument();
|
||||
if (!pPDFDocument || !pDoc)
|
||||
return false;
|
||||
|
||||
PdfWriter::CPage* pEditPage = pDoc->GetEditPage(nPageIndex);
|
||||
PdfWriter::CPage* pEditPage = NULL;
|
||||
pEditPage = bActualPos ? pDoc->GetPage(nPageIndex) : pDoc->GetEditPage(nPageIndex);
|
||||
if (pEditPage)
|
||||
{
|
||||
if (bSet)
|
||||
@ -1030,7 +1031,7 @@ bool CPdfEditor::EditPage(int nPageIndex, bool bSet, int nNewPage)
|
||||
pageObj.free();
|
||||
|
||||
// Применение редактирования страницы для writer
|
||||
if (pDoc->EditPage(pXref, pPage, nPageIndex, nNewPage))
|
||||
if (pDoc->EditPage(pXref, pPage, nPageIndex))
|
||||
{
|
||||
if (bSet)
|
||||
{
|
||||
@ -1075,7 +1076,7 @@ bool CPdfEditor::AddPage(int nPageIndex)
|
||||
}
|
||||
bool CPdfEditor::MovePage(int nPageIndex, int nPos)
|
||||
{
|
||||
if (EditPage(nPageIndex, true, nPos))
|
||||
if (EditPage(nPageIndex, true, true))
|
||||
{
|
||||
m_nEditPage = nPos;
|
||||
return pWriter->GetDocument()->MovePage(nPageIndex, nPos);
|
||||
|
||||
@ -44,7 +44,7 @@ public:
|
||||
|
||||
int GetError();
|
||||
void Close();
|
||||
bool EditPage(int nPageIndex, bool bSet = true, int nNewPage = -1);
|
||||
bool EditPage(int nPageIndex, bool bSet = true, bool bActualPos = false);
|
||||
bool DeletePage(int nPageIndex);
|
||||
bool AddPage(int nPageIndex);
|
||||
bool MovePage(int nPageIndex, int nPos);
|
||||
|
||||
@ -1677,7 +1677,9 @@ HRESULT CPdfWriter::AddAnnotField(NSFonts::IApplicationFonts* pAppFonts, CAnnotF
|
||||
CAnnotFieldInfo& oInfo = *pFieldInfo;
|
||||
PdfWriter::CAnnotation* pAnnot = NULL;
|
||||
|
||||
PdfWriter::CPage* pOrigPage = m_pDocument->GetPage(oInfo.GetPage());
|
||||
PdfWriter::CPage* pOrigPage = m_pDocument->GetEditPage(oInfo.GetPage());
|
||||
if (!pOrigPage)
|
||||
pOrigPage = m_pDocument->GetPage(oInfo.GetPage());
|
||||
PdfWriter::CPage* pPage = m_pPage;
|
||||
|
||||
int nID = oInfo.GetID();
|
||||
|
||||
@ -353,10 +353,6 @@ namespace PdfWriter
|
||||
}
|
||||
CPage* CDocument::GetPage(const unsigned int &unPage)
|
||||
{
|
||||
CPage* pRes = GetEditPage(unPage);
|
||||
if (pRes)
|
||||
return pRes;
|
||||
|
||||
if (unPage >= m_pPageTree->GetCount())
|
||||
return NULL;
|
||||
|
||||
@ -370,6 +366,11 @@ namespace PdfWriter
|
||||
pRes = p->second;
|
||||
return pRes;
|
||||
}
|
||||
int CDocument::FindPage(CPage* pPage)
|
||||
{
|
||||
int nI = 0;
|
||||
return m_pPageTree->Find(pPage, nI) ? nI : -1;
|
||||
}
|
||||
unsigned int CDocument::GetPagesCount() const
|
||||
{
|
||||
return m_pPageTree->GetCount();
|
||||
@ -1442,7 +1443,7 @@ namespace PdfWriter
|
||||
|
||||
return pRes;
|
||||
}
|
||||
bool CDocument::EditPage(CXref* pXref, CPage* pPage, int nPageIndex, int nNewPage)
|
||||
bool CDocument::EditPage(CXref* pXref, CPage* pPage, int nPageIndex)
|
||||
{
|
||||
if (!pPage || !EditXref(pXref))
|
||||
return false;
|
||||
@ -1454,10 +1455,7 @@ namespace PdfWriter
|
||||
#endif
|
||||
|
||||
m_pCurPage = pPage;
|
||||
if (nNewPage > 0)
|
||||
m_mEditPages[nNewPage] = pPage;
|
||||
else
|
||||
m_mEditPages[nPageIndex] = pPage;
|
||||
m_mEditPages[nPageIndex] = pPage;
|
||||
|
||||
if (m_pPageTree)
|
||||
m_pPageTree->ReplacePage(nPageIndex, pPage);
|
||||
|
||||
@ -123,6 +123,7 @@ namespace PdfWriter
|
||||
CPage* AddPage();
|
||||
CPage* GetPage (const unsigned int& unPage);
|
||||
CPage* GetEditPage(const unsigned int& unPage);
|
||||
int FindPage (CPage* pPage);
|
||||
unsigned int GetPagesCount() const;
|
||||
void AddPageLabel(EPageNumStyle eStyle, unsigned int unFirstPage, const char* sPrefix);
|
||||
void AddPageLabel(unsigned int unPageIndex, EPageNumStyle eStyle, unsigned int unFirstPage, const char* sPrefix);
|
||||
@ -191,7 +192,7 @@ namespace PdfWriter
|
||||
bool EditPdf(const std::wstring& wsPath, int nPosLastXRef, int nSizeXRef, CXref* pXref, CCatalog* pCatalog, CEncryptDict* pEncrypt, int nFormField);
|
||||
bool EditResources(CXref* pXref, CResourcesDict* pResources);
|
||||
std::pair<int, int> GetPageRef(int nPageIndex);
|
||||
bool EditPage(CXref* pXref, CPage* pPage, int nPageIndex, int nNewPage = -1);
|
||||
bool EditPage(CXref* pXref, CPage* pPage, int nPageIndex);
|
||||
CPage* AddPage(int nPageIndex);
|
||||
bool DeletePage(int nPageIndex);
|
||||
bool MovePage(int nPageIndex, int nPos);
|
||||
|
||||
@ -271,6 +271,22 @@ namespace PdfWriter
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
bool CPageTree::Find(CPage* pPage, int& nI)
|
||||
{
|
||||
for (int i = 0, count = m_pPages->GetCount(); i < count; ++i)
|
||||
{
|
||||
CObjectBase* pObj = m_pPages->Get(i);
|
||||
if (pObj->GetType() == object_type_DICT && ((CDictObject*)pObj)->GetDictType() == dict_type_PAGES && ((CPageTree*)pObj)->Find(pPage, nI))
|
||||
return true;
|
||||
else
|
||||
{
|
||||
if (pPage == pObj)
|
||||
return true;
|
||||
nI++;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
CObjectBase* CPageTree::GetFromPageTree(int nPageIndex, int& nI, bool bRemove, bool bInsert, CPage* pPage)
|
||||
{
|
||||
for (int i = 0, count = m_pPages->GetCount(); i < count; ++i)
|
||||
|
||||
@ -72,6 +72,7 @@ namespace PdfWriter
|
||||
bool InsertPage(int nPageIndex, CPage* pPage);
|
||||
bool ReplacePage(int nPageIndex, CPage* pPage);
|
||||
bool Join(CPageTree* pPageTree);
|
||||
bool Find(CPage* pPage, int& nI);
|
||||
unsigned int GetCount()
|
||||
{
|
||||
return m_pCount ? m_pCount->Get() : 0;
|
||||
|
||||
Reference in New Issue
Block a user