diff options
Diffstat (limited to 'fpdfsdk')
-rw-r--r-- | fpdfsdk/fpdf_doc_embeddertest.cpp | 4 | ||||
-rw-r--r-- | fpdfsdk/fpdf_editpage.cpp | 3 | ||||
-rw-r--r-- | fpdfsdk/fpdf_flatten.cpp | 4 | ||||
-rw-r--r-- | fpdfsdk/fpdf_ppo.cpp | 2 | ||||
-rw-r--r-- | fpdfsdk/fpdf_view.cpp | 5 | ||||
-rw-r--r-- | fpdfsdk/fpdfxfa/cpdfxfa_page.cpp | 11 |
6 files changed, 20 insertions, 9 deletions
diff --git a/fpdfsdk/fpdf_doc_embeddertest.cpp b/fpdfsdk/fpdf_doc_embeddertest.cpp index a9e4701e1d..c1f5e02ed6 100644 --- a/fpdfsdk/fpdf_doc_embeddertest.cpp +++ b/fpdfsdk/fpdf_doc_embeddertest.cpp @@ -27,7 +27,11 @@ TEST_F(FPDFDocEmbeddertest, MultipleSamePage) { ref.reset(FPDF_LoadPage(document(), 0)); unique_pages.insert(ref.get()); } +#ifdef PDF_ENABLE_XFA EXPECT_EQ(1u, unique_pages.size()); +#else // PDF_ENABLE_XFA + EXPECT_EQ(4u, unique_pages.size()); +#endif // PDF_ENABLE_XFA } TEST_F(FPDFDocEmbeddertest, DestGetPageIndex) { diff --git a/fpdfsdk/fpdf_editpage.cpp b/fpdfsdk/fpdf_editpage.cpp index b8ceea5724..094349f694 100644 --- a/fpdfsdk/fpdf_editpage.cpp +++ b/fpdfsdk/fpdf_editpage.cpp @@ -200,7 +200,8 @@ FPDF_EXPORT FPDF_PAGE FPDF_CALLCONV FPDFPage_New(FPDF_DOCUMENT document, // Eventually, fallthru into non-XFA case once page type is consistent. return nullptr; #else // PDF_ENABLE_XFA - RetainPtr<CPDF_Page> pPage = pDoc->GetOrCreatePDFPage(pPageDict); + auto pPage = pdfium::MakeRetain<CPDF_Page>(pDoc, pPageDict, true); + pPage->ParseContent(); return FPDFPageFromUnderlying(pPage.Leak()); // Caller takes ownership. #endif // PDF_ENABLE_XFA } diff --git a/fpdfsdk/fpdf_flatten.cpp b/fpdfsdk/fpdf_flatten.cpp index 2d81f1230e..720fa9ff55 100644 --- a/fpdfsdk/fpdf_flatten.cpp +++ b/fpdfsdk/fpdf_flatten.cpp @@ -47,7 +47,9 @@ bool IsValidRect(const CFX_FloatRect& rect, const CFX_FloatRect& rcPage) { void GetContentsRect(CPDF_Document* pDoc, CPDF_Dictionary* pDict, std::vector<CFX_FloatRect>* pRectArray) { - RetainPtr<CPDF_Page> pPDFPage = pDoc->GetOrCreatePDFPage(pDict); + auto pPDFPage = pdfium::MakeRetain<CPDF_Page>(pDoc, pDict, false); + pPDFPage->ParseContent(); + for (const auto& pPageObject : *pPDFPage->GetPageObjectList()) { CFX_FloatRect rc; rc.left = pPageObject->m_Left; diff --git a/fpdfsdk/fpdf_ppo.cpp b/fpdfsdk/fpdf_ppo.cpp index 4ea3334b65..b73042466b 100644 --- a/fpdfsdk/fpdf_ppo.cpp +++ b/fpdfsdk/fpdf_ppo.cpp @@ -618,7 +618,7 @@ bool CPDF_NPageToOneExporter::ExportNPagesToOne( if (!pSrcPageDict) return false; - RetainPtr<CPDF_Page> srcPage = src()->GetOrCreatePDFPage(pSrcPageDict); + auto srcPage = pdfium::MakeRetain<CPDF_Page>(src(), pSrcPageDict, true); NupPageSettings settings = nupState.CalculateNewPagePosition(srcPage->GetPageSize()); AddSubPage(pSrcPageDict, settings, &objectNumberMap, &pageXObjectMap, diff --git a/fpdfsdk/fpdf_view.cpp b/fpdfsdk/fpdf_view.cpp index e38c651cbe..1b33952204 100644 --- a/fpdfsdk/fpdf_view.cpp +++ b/fpdfsdk/fpdf_view.cpp @@ -360,7 +360,8 @@ FPDF_EXPORT FPDF_PAGE FPDF_CALLCONV FPDF_LoadPage(FPDF_DOCUMENT document, if (!pDict) return nullptr; - RetainPtr<CPDF_Page> pPage = pDoc->GetOrCreatePDFPage(pDict); + auto pPage = pdfium::MakeRetain<CPDF_Page>(pDoc, pDict, true); + pPage->ParseContent(); return FPDFPageFromUnderlying(pPage.Leak()); #endif // PDF_ENABLE_XFA } @@ -958,7 +959,7 @@ FPDF_EXPORT int FPDF_CALLCONV FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document, if (!pDict) return false; - RetainPtr<CPDF_Page> page = pDoc->GetOrCreatePDFPage(pDict); + auto page = pdfium::MakeRetain<CPDF_Page>(pDoc, pDict, true); *width = page->GetPageWidth(); *height = page->GetPageHeight(); return true; diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp index f4120896a8..4d7e3bc222 100644 --- a/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp +++ b/fpdfsdk/fpdfxfa/cpdfxfa_page.cpp @@ -34,9 +34,10 @@ bool CPDFXFA_Page::LoadPDFPage() { if (!pDict) return false; - if (!m_pPDFPage || m_pPDFPage->GetFormDict() != pDict) - m_pPDFPage = pPDFDoc->GetOrCreatePDFPage(pDict); - + if (!m_pPDFPage || m_pPDFPage->GetFormDict() != pDict) { + m_pPDFPage = pdfium::MakeRetain<CPDF_Page>(pPDFDoc, pDict, true); + m_pPDFPage->ParseContent(); + } return true; } @@ -79,7 +80,9 @@ bool CPDFXFA_Page::LoadPDFPage(CPDF_Dictionary* pageDict) { if (!m_pContext || m_iPageIndex < 0 || !pageDict) return false; - m_pPDFPage = m_pContext->GetPDFDoc()->GetOrCreatePDFPage(pageDict); + m_pPDFPage = + pdfium::MakeRetain<CPDF_Page>(m_pContext->GetPDFDoc(), pageDict, true); + m_pPDFPage->ParseContent(); return true; } |