sd/qa/unit/data/sample.pdf |binary sd/qa/unit/export-tests.cxx | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+)
New commits: commit 265e772012396aa59084badf10e452473fc0b862 Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Mon Sep 15 14:37:56 2025 +0100 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Wed Sep 17 09:45:55 2025 +0200 add basic test of exploding pdf Change-Id: I96c070a072af45c3b361f34d769832a5f047d748 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190975 Reviewed-by: Miklos Vajna <vmik...@collabora.com> Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> diff --git a/sd/qa/unit/data/sample.pdf b/sd/qa/unit/data/sample.pdf new file mode 100644 index 000000000000..dcd1283df1b6 Binary files /dev/null and b/sd/qa/unit/data/sample.pdf differ diff --git a/sd/qa/unit/export-tests.cxx b/sd/qa/unit/export-tests.cxx index 14c3c4a04232..722d1f4d990d 100644 --- a/sd/qa/unit/export-tests.cxx +++ b/sd/qa/unit/export-tests.cxx @@ -18,10 +18,12 @@ #include <editeng/outlobj.hxx> #include <editeng/colritem.hxx> #include <editeng/eeitem.hxx> +#include <osl/process.h> #include <unotools/saveopt.hxx> #include <svx/svdotext.hxx> #include <svx/svdograf.hxx> +#include <svx/svdogrp.hxx> #include <svx/svdomedia.hxx> #include <rtl/ustring.hxx> @@ -55,6 +57,25 @@ public: { } + struct UsePdfium + { + // We need to enable PDFium import (and make sure to disable after the test) + bool bResetEnvVar = false; + UsePdfium() + { + if (getenv("LO_IMPORT_USE_PDFIUM") == nullptr) + { + bResetEnvVar = true; + osl_setEnvironment(u"LO_IMPORT_USE_PDFIUM"_ustr.pData, u"1"_ustr.pData); + } + } + ~UsePdfium() + { + if (bResetEnvVar) + osl_clearEnvironment(u"LO_IMPORT_USE_PDFIUM"_ustr.pData); + }; + }; + protected: uno::Reference<awt::XBitmap> getBitmapFromTable(OUString const& rName); }; @@ -987,6 +1008,28 @@ CPPUNIT_TEST_FIXTURE(SdExportTest, testEmbeddedPdf) CPPUNIT_ASSERT(xGraphic.is()); } +CPPUNIT_TEST_FIXTURE(SdExportTest, testExplodedPdf) +{ + auto pPdfium = vcl::pdf::PDFiumLibrary::get(); + if (!pPdfium) + return; + UsePdfium aGuard; + + loadFromFile(u"sample.pdf"); + + setFilterOptions("{\"DecomposePDF\":{\"type\":\"boolean\",\"value\":\"true\"}}"); + saveAndReload(u"OpenDocument Drawing Flat XML"_ustr); + + const SdrPage* pPage = GetPage(1); + + const SdrObject* pObj = pPage->GetObj(0); + CPPUNIT_ASSERT(pObj); + const SdrObjGroup* pObjGroup = dynamic_cast<const SdrObjGroup*>(pObj); + CPPUNIT_ASSERT(pObjGroup); + // Should have exploded to 7 shapes, would be just 1 if not exploded + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(7), pObjGroup->GetObjCount()); +} + CPPUNIT_TEST_FIXTURE(SdExportTest, testEmbeddedText) { createSdDrawDoc("objectwithtext.fodg");