vcl/qa/cppunit/pdfexport/pdfexport.cxx  |  323 +++++++++++++++++------
 vcl/qa/cppunit/pdfexport/pdfexport2.cxx |  448 ++++++++++++++++++++++++--------
 2 files changed, 588 insertions(+), 183 deletions(-)

New commits:
commit 761a0450d32d50bc8e4128e4f24721e4254a8ca9
Author:     Xisco Fauli <[email protected]>
AuthorDate: Tue Feb 3 16:52:11 2026 +0100
Commit:     Tomaž Vajngerl <[email protected]>
CommitDate: Tue Mar 10 02:09:52 2026 +0100

    CppunitTest_vcl_pdfexport2: only use aMediaDescriptor where needed
    
    Change-Id: Ic038b21c54096c88116c70393aeaf50ddcce3dfb
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198615
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/201181
    Reviewed-by: Tomaž Vajngerl <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx 
b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
index d2359cdcba8a..97ec3e0de263 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
@@ -55,44 +55,28 @@ namespace
 /// Tests the PDF export filter.
 class PdfExportTest2 : public UnoApiTest
 {
-protected:
-    utl::MediaDescriptor aMediaDescriptor;
-
 public:
     PdfExportTest2()
         : UnoApiTest(u"/vcl/qa/cppunit/pdfexport/data/"_ustr)
     {
     }
-
-    void saveAsPDF(std::u16string_view rFile);
-    void load(std::u16string_view rFile, vcl::filter::PDFDocument& rDocument);
 };
 
-void PdfExportTest2::saveAsPDF(std::u16string_view rFile)
-{
-    // Import the bugdoc and export as PDF.
-    loadFromFile(rFile);
-    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
-}
-
-void PdfExportTest2::load(std::u16string_view rFile, vcl::filter::PDFDocument& 
rDocument)
-{
-    saveAsPDF(rFile);
-
-    // Parse the export result.
-    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
-    CPPUNIT_ASSERT(rDocument.Read(aStream));
-}
-
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf160705)
 {
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf160705.odt", aDocument);
+    loadFromFile(u"tdf160705.odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -152,10 +136,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf159895)
         { "PDFUACompliance", uno::Any(true) },
         { "ExportFormFields", uno::Any(true) },
     }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf159895.odt", aDocument);
+    loadFromFile(u"tdf159895.odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -210,7 +200,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf124272)
 {
     // Import the bugdoc and export as PDF.
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf124272.odt", aDocument);
+    loadFromFile(u"tdf124272.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -242,7 +237,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf124272)
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf121615)
 {
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf121615.odt", aDocument);
+    loadFromFile(u"tdf121615.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -290,7 +290,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf121615)
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf141171)
 {
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf141171.odt", aDocument);
+    loadFromFile(u"tdf141171.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     int nImages(0);
     for (const auto& rDocElement : aDocument.GetElements())
@@ -335,7 +340,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf161346)
 {
     // this crashed
     vcl::filter::PDFDocument aDocument;
-    load(u"fdo47811-1_Word2013.docx", aDocument);
+    loadFromFile(u"fdo47811-1_Word2013.docx");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
     CPPUNIT_ASSERT_EQUAL(size_t(2), aPages.size());
@@ -348,10 +358,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf129085)
         // not a JPEG! 80 works currently but set it lower to be sure...
         { "Quality", uno::Any(sal_Int32(50)) },
     }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf129085.docx", aDocument);
+    loadFromFile(u"tdf129085.docx");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -425,7 +441,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTocLink)
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testReduceSmallImage)
 {
     // Load the Writer document.
-    saveAsPDF(u"reduce-small-image.fodt");
+    loadFromFile(u"reduce-small-image.fodt");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
     std::unique_ptr<vcl::pdf::PDFiumPage> pPdfPage = 
pPdfDocument->openPage(/*nIndex=*/0);
@@ -449,7 +466,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testReduceSmallImage)
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf114256)
 {
-    saveAsPDF(u"tdf114256.ods");
+    loadFromFile(u"tdf114256.ods");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
     std::unique_ptr<vcl::pdf::PDFiumPage> pPdfPage = 
pPdfDocument->openPage(/*nIndex=*/0);
@@ -463,7 +481,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf114256)
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf150931)
 {
-    saveAsPDF(u"tdf150931.ods");
+    loadFromFile(u"tdf150931.ods");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
     std::unique_ptr<vcl::pdf::PDFiumPage> pPdfPage = 
pPdfDocument->openPage(/*nIndex=*/0);
@@ -512,7 +531,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf147027)
         return;
 
     // Load the Calc document.
-    saveAsPDF(u"tdf147027.ods");
+    loadFromFile(u"tdf147027.ods");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
     std::unique_ptr<vcl::pdf::PDFiumPage> pPdfPage = 
pPdfDocument->openPage(/*nIndex=*/0);
@@ -527,7 +547,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf147027)
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf135346)
 {
     // Load the Calc document.
-    saveAsPDF(u"tdf135346.ods");
+    loadFromFile(u"tdf135346.ods");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
     std::unique_ptr<vcl::pdf::PDFiumPage> pPdfPage = 
pPdfDocument->openPage(/*nIndex=*/0);
@@ -541,7 +562,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf135346)
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf147164)
 {
-    saveAsPDF(u"tdf147164.odp");
+    loadFromFile(u"tdf147164.odp");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(2, pPdfDocument->getPageCount());
     std::unique_ptr<vcl::pdf::PDFiumPage> pPdfPage = 
pPdfDocument->openPage(/*nIndex=*/1);
@@ -605,7 +627,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testReduceImage)
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testLinkWrongPage)
 {
     // Import the bugdoc and export as PDF.
-    saveAsPDF(u"link-wrong-page.odp");
+    loadFromFile(u"link-wrong-page.odp");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
 
     // The document has 2 pages.
@@ -632,8 +655,10 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testLinkWrongPagePartial)
     uno::Sequence<beans::PropertyValue> aFilterData = {
         comphelper::makePropertyValue(u"PageRange"_ustr, u"2-3"_ustr),
     };
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
-    saveAsPDF(u"link-wrong-page-partial.odg");
+    loadFromFile(u"link-wrong-page-partial.odg");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Then make sure the we have a link on the 1st page, but not on the 2nd 
one:
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -652,9 +677,11 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testPageRange)
 {
     // Given a document with 3 pages:
     // When exporting that document to PDF, skipping the first page:
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterOptions"_ustr]
         <<= u"{\"PageRange\":{\"type\":\"string\",\"value\":\"2-\"}}"_ustr;
-    saveAsPDF(u"link-wrong-page-partial.odg");
+    loadFromFile(u"link-wrong-page-partial.odg");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Then make sure the resulting PDF has 2 pages:
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -668,7 +695,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testPageRange)
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testLargePage)
 {
     // Import the bugdoc and export as PDF.
-    saveAsPDF(u"6m-wide.odg");
+    loadFromFile(u"6m-wide.odg");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
 
     // The document has 1 page.
@@ -767,6 +795,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testVersion15)
     // Save as PDF.
     uno::Sequence<beans::PropertyValue> 
aFilterData(comphelper::InitPropertySequence(
         { { "SelectPdfVersion", uno::Any(static_cast<sal_Int32>(15)) } }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
@@ -784,6 +813,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testVersion20)
     // Save as PDF.
     uno::Sequence<beans::PropertyValue> aFilterData = 
comphelper::InitPropertySequence(
         { { "SelectPdfVersion", uno::Any(static_cast<sal_Int32>(20)) } });
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor["FilterData"] <<= aFilterData;
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
@@ -817,7 +847,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testMultiPagePDF)
 
     // Load the PDF and save as PDF
     vcl::filter::PDFDocument aDocument;
-    load(u"SimpleMultiPagePDF.pdf", aDocument);
+    loadFromFile(u"SimpleMultiPagePDF.pdf");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
     CPPUNIT_ASSERT_EQUAL(size_t(3), aPages.size());
@@ -954,8 +989,10 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testFormFontName)
     uno::Sequence<beans::PropertyValue> 
aFilterData(comphelper::InitPropertySequence({
         { "ExportFormFields", uno::Any(true) },
     }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
-    saveAsPDF(u"form-font-name.odt");
+    loadFromFile(u"form-font-name.odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -1002,7 +1039,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testReexportPDF)
 
     // Load the PDF and save as PDF
     vcl::filter::PDFDocument aDocument;
-    load(u"PDFWithImages.pdf", aDocument);
+    loadFromFile(u"PDFWithImages.pdf");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // Assert that the XObject in the page resources dictionary is a reference 
XObject.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -1192,7 +1234,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testReexportPDF)
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf160117)
 {
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf160117.ods", aDocument);
+    loadFromFile(u"tdf160117.ods");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -1251,7 +1298,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testReexportDocumentWithComplexResources)
 
     // Load the PDF and save as PDF
     vcl::filter::PDFDocument aDocument;
-    load(u"ComplexContentDictionary.pdf", aDocument);
+    loadFromFile(u"ComplexContentDictionary.pdf");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // Assert that the XObject in the page resources dictionary is a reference 
XObject.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -1331,10 +1383,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testPdfUaMetadata)
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"BrownFoxLazyDog.odt", aDocument);
+    loadFromFile(u"BrownFoxLazyDog.odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     auto* pCatalog = aDocument.GetCatalog();
     CPPUNIT_ASSERT(pCatalog);
@@ -1405,10 +1463,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf139736)
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
},
                                            { "SelectPdfVersion", 
uno::Any(sal_Int32(17)) } }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf139736-1.odt", aDocument);
+    loadFromFile(u"tdf139736-1.odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
     CPPUNIT_ASSERT_EQUAL(size_t(1), aPages.size());
@@ -1508,9 +1572,15 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf152231)
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
},
                                            { "ExportNotesInMargin", 
uno::Any(true) },
                                            { "SelectPdfVersion", 
uno::Any(sal_Int32(17)) } }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf152231.fodt", aDocument);
+    loadFromFile(u"tdf152231.fodt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
     CPPUNIT_ASSERT_EQUAL(size_t(1), aPages.size());
@@ -1615,6 +1685,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf152235)
           // need to set a font to avoid assertions about missing "Helvetica"
           { "WatermarkFontName", uno::Any(u"Liberation Sans"_ustr) },
           { "SelectPdfVersion", uno::Any(sal_Int32(17)) } }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
     loadFromURL(u"private:factory/swriter"_ustr);
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
@@ -1699,9 +1770,15 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf149140)
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
     vcl::filter::PDFDocument aDocument;
-    
load(u"TableTH_test_LibreOfficeWriter7.3.3_HeaderRow-HeadersInTopRow.fodt", 
aDocument);
+    
loadFromFile(u"TableTH_test_LibreOfficeWriter7.3.3_HeaderRow-HeadersInTopRow.fodt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -1752,10 +1829,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testNestedSection)
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"nestedsection.fodt", aDocument);
+    loadFromFile(u"nestedsection.fodt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // the assert needs 2 follows to reproduce => 3 pages
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -1893,10 +1976,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf157817)
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"SimpleTOC.fodt", aDocument);
+    loadFromFile(u"SimpleTOC.fodt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -2062,10 +2151,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf135638)
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"image-shape.fodt", aDocument);
+    loadFromFile(u"image-shape.fodt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -2152,10 +2247,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf157703)
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"LO_Lbl_Lbody_bug_report.fodt", aDocument);
+    loadFromFile(u"LO_Lbl_Lbody_bug_report.fodt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -2226,10 +2327,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testSpans)
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"spanlist.fodt", aDocument);
+    loadFromFile(u"spanlist.fodt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has two pages.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -2740,9 +2847,11 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf157182)
         // only happens with PDF/A-1
         { "SelectPdfVersion", uno::Any(static_cast<sal_Int32>(1)) },
     }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
-    saveAsPDF(u"transparentshape.fodp");
+    loadFromFile(u"transparentshape.fodp");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // just check this does not crash or assert
 }
@@ -2752,10 +2861,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf57423)
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"Description PDF Export test .odt", aDocument);
+    loadFromFile(u"Description PDF Export test .odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -2851,10 +2966,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf154982)
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf154982.odt", aDocument);
+    loadFromFile(u"tdf154982.odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -2927,10 +3048,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf157397)
         { "PDFUACompliance", uno::Any(true) },
         { "ExportFormFields", uno::Any(true) },
     }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"PDF_export_with_formcontrol.fodt", aDocument);
+    loadFromFile(u"PDF_export_with_formcontrol.fodt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -3249,10 +3376,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf135192)
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf135192-1.fodp", aDocument);
+    loadFromFile(u"tdf135192-1.fodp");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -3376,9 +3509,15 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf154955)
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
     vcl::filter::PDFDocument aDocument;
-    load(u"grouped-shape.fodt", aDocument);
+    loadFromFile(u"grouped-shape.fodt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -3504,10 +3643,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf155190)
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf155190.odt", aDocument);
+    loadFromFile(u"tdf155190.odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -3588,10 +3733,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testMediaShapeAnnot)
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"vid.odt", aDocument);
+    loadFromFile(u"vid.odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -3722,10 +3873,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testFlyFrameHyperlinkAnnot)
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"image-hyperlink-alttext.fodt", aDocument);
+    loadFromFile(u"image-hyperlink-alttext.fodt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -3852,10 +4009,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testFormControlAnnot)
         { "PDFUACompliance", uno::Any(true) },
         { "ExportFormFields", uno::Any(true) },
     }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"formcontrol.fodt", aDocument);
+    loadFromFile(u"formcontrol.fodt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -3984,6 +4147,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf142129)
     // Enable Outlines export
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "ExportBookmarks", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
@@ -4119,7 +4283,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf144222)
 {
 // Assume Windows has the font for U+4E2D
 #ifdef _WIN32
-    saveAsPDF(u"tdf144222.ods");
+    loadFromFile(u"tdf144222.ods");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
 
     // The document has one page.
@@ -4158,7 +4323,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf144222)
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf145873)
 {
     // Import the bugdoc and export as PDF.
-    saveAsPDF(u"tdf145873.pptx");
+    loadFromFile(u"tdf145873.pptx");
+    save(TestFilter::PDF_WRITER);
 
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
 
@@ -4192,7 +4358,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testPdfImageHyperlink)
 {
     // Given a Draw file, containing a PDF image, which has a hyperlink in it:
     // When saving to PDF:
-    saveAsPDF(u"pdf-image-hyperlink.odg");
+    loadFromFile(u"pdf-image-hyperlink.odg");
+    save(TestFilter::PDF_WRITER);
 
     // Then make sure that link is preserved:
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -4310,6 +4477,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testURIs)
             { "ExportLinksRelativeFsys", uno::Any(uri.relativeFsys) },
             { "ConvertOOoTargetToPDFTarget", uno::Any(true) },
         }));
+        comphelper::SequenceAsHashMap aMediaDescriptor;
         aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
         // Add a link (based on testNestedHyperlink in rtfexport3)
@@ -4369,7 +4537,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testPdfImageAnnots)
 {
     // Given a document with a PDF image that has 2 comments (popup, text) and 
a hyperlink:
     // When saving to PDF:
-    saveAsPDF(u"pdf-image-annots.odg");
+    loadFromFile(u"pdf-image-annots.odg");
+    save(TestFilter::PDF_WRITER);
 
     // Then make sure only the hyperlink is kept, since Draw itself has its 
own comments:
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -4404,6 +4573,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testPdfImageEncryption)
         comphelper::makePropertyValue(u"EncryptFile"_ustr, true),
         comphelper::makePropertyValue(u"DocumentOpenPassword"_ustr, 
u"secret"_ustr),
     };
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
@@ -4432,7 +4602,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testBitmapScaledown)
 
     // Given a document with an upscaled and rotated barcode bitmap in it:
     // When saving as PDF:
-    saveAsPDF(u"bitmap-scaledown.odt");
+    loadFromFile(u"bitmap-scaledown.odt");
+    save(TestFilter::PDF_WRITER);
 
     // Then verify that the bitmap is not downscaled:
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -4461,7 +4632,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testBitmapScaledown)
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf139627)
 {
 #if HAVE_MORE_FONTS
-    saveAsPDF(u"justified-arabic-kashida.odt");
+    loadFromFile(u"justified-arabic-kashida.odt");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
 
     // The document has one page.
@@ -4546,7 +4718,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testRexportRefToKids)
 
     // Load the PDF and save as PDF
     vcl::filter::PDFDocument aDocument;
-    load(u"ref-to-kids.pdf", aDocument);
+    loadFromFile(u"ref-to-kids.pdf");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
     CPPUNIT_ASSERT_EQUAL(size_t(5), aPages.size());
@@ -4583,11 +4760,17 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testRexportFilterSingletonArray)
     // the test fails with tagged PDF enabled
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "UseTaggedPDF", uno::Any(false) } 
}));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     // Load the PDF and save as PDF
     vcl::filter::PDFDocument aDocument;
-    load(u"ref-to-kids.pdf", aDocument);
+    loadFromFile(u"ref-to-kids.pdf");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
     CPPUNIT_ASSERT_EQUAL(size_t(5), aPages.size());
@@ -4637,7 +4820,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testRexportMediaBoxOrigin)
 
     // Load the PDF and save as PDF
     vcl::filter::PDFDocument aDocument;
-    load(u"ref-to-kids.pdf", aDocument);
+    loadFromFile(u"ref-to-kids.pdf");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
     CPPUNIT_ASSERT_EQUAL(size_t(5), aPages.size());
@@ -4701,7 +4889,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testRexportResourceItemReference)
 
     // Load the PDF and save as PDF
     vcl::filter::PDFDocument aDocument;
-    load(u"ref-to-kids.pdf", aDocument);
+    loadFromFile(u"ref-to-kids.pdf");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
     CPPUNIT_ASSERT_EQUAL(size_t(5), aPages.size());
@@ -4737,9 +4930,15 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf152246)
     uno::Sequence<beans::PropertyValue> 
aFilterData(comphelper::InitPropertySequence({
         { "ExportFormFields", uno::Any(true) },
     }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
     vcl::filter::PDFDocument aDocument;
-    load(u"content-control-rtl.docx", aDocument);
+    loadFromFile(u"content-control-rtl.docx");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -4788,7 +4987,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf155161)
 // TODO: We seem to get a fallback font on Windows
 #ifndef _WIN32
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf155161.odt", aDocument);
+    loadFromFile(u"tdf155161.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // Check that all fonts in the document are Type 3 fonts
     int nFonts = 0;
@@ -4827,7 +5031,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf155161)
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf48707_1)
 {
     // Import the bugdoc and export as PDF.
-    saveAsPDF(u"tdf48707-1.fodt");
+    loadFromFile(u"tdf48707-1.fodt");
+    save(TestFilter::PDF_WRITER);
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -4857,7 +5062,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf48707_1)
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf48707_2)
 {
     // Import the bugdoc and export as PDF.
-    saveAsPDF(u"tdf48707-2.fodt");
+    loadFromFile(u"tdf48707-2.fodt");
+    save(TestFilter::PDF_WRITER);
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -4889,7 +5095,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf48707_2)
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf156528)
 {
-    saveAsPDF(u"wide_page1.fodt");
+    loadFromFile(u"wide_page1.fodt");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
 
     // The document has two pages
@@ -4988,8 +5195,10 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf159817)
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "ExportFormFields", 
uno::Any(false) } }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
-    saveAsPDF(u"tdf159817.fodt");
+    loadFromFile(u"tdf159817.fodt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
 
@@ -5038,7 +5247,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf159817)
 // Tests that kerning is correctly applied across color changes
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf61444)
 {
-    saveAsPDF(u"tdf61444.odt");
+    loadFromFile(u"tdf61444.odt");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
 
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -5086,7 +5296,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf61444)
 // tdf#124116 - Tests that track-changes inside a grapheme cluster does not 
break positioning
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf124116TrackUntrack)
 {
-    saveAsPDF(u"tdf124116-hebrew-track-untrack.odt");
+    loadFromFile(u"tdf124116-hebrew-track-untrack.odt");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
 
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -5142,7 +5353,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testTdf124116TrackUntrack)
 // tdf#134226 - Tests that shaping is not broken by invisible spans
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf134226)
 {
-    saveAsPDF(u"tdf134226-shadda-in-hidden-span.fodt");
+    loadFromFile(u"tdf134226-shadda-in-hidden-span.fodt");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
 
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -5199,7 +5411,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf134226)
 // tdf#71956 - Tests that glyphs can be individually styled
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf71956)
 {
-    saveAsPDF(u"tdf71956-styled-diacritics.fodt");
+    loadFromFile(u"tdf71956-styled-diacritics.fodt");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
 
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -5262,7 +5475,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf71956)
 // tdf#101686 - Verifies that drawinglayer clears RTL flags while drawing 
Writer text boxes
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf101686)
 {
-    saveAsPDF(u"tdf101686.fodt");
+    loadFromFile(u"tdf101686.fodt");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
 
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -5316,7 +5530,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testRexportXnViewColorspace)
 
     // Load the PDF and save as PDF
     vcl::filter::PDFDocument aDocument;
-    load(u"xnview-colorspace.pdf", aDocument);
+    loadFromFile(u"xnview-colorspace.pdf");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
     CPPUNIT_ASSERT_EQUAL(size_t(1), aPages.size());
@@ -5368,7 +5587,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testRexportXnViewColorspace)
 // tdf#157390 - Verifies metrics are correct for PDF export mixing horizontal 
and vertical CJK
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf157390)
 {
-    saveAsPDF(u"tdf157390-overlapping-kanji.fodt");
+    loadFromFile(u"tdf157390-overlapping-kanji.fodt");
+    save(TestFilter::PDF_WRITER);
 
     auto pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -5421,7 +5641,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf157390)
 // tdf#162205 - Verifies bidi portions on vertical left-to-right pages are 
rendered correctly
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf162205Ltr)
 {
-    saveAsPDF(u"tdf162205-ltr.fodt");
+    loadFromFile(u"tdf162205-ltr.fodt");
+    save(TestFilter::PDF_WRITER);
 
     auto pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -5476,7 +5697,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf162205Ltr)
 // tdf#162205 - Verifies bidi portions on vertical left-to-right pages are 
rendered correctly
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf162205Rtl)
 {
-    saveAsPDF(u"tdf162205-rtl.fodt");
+    loadFromFile(u"tdf162205-rtl.fodt");
+    save(TestFilter::PDF_WRITER);
 
     auto pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -5531,7 +5753,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf162205Rtl)
 // tdf#162194 - Verifies soft hyphens inside ligatures are rendered correctly.
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf162194SoftHyphen)
 {
-    saveAsPDF(u"tdf162194-soft-hyphen.fodt");
+    loadFromFile(u"tdf162194-soft-hyphen.fodt");
+    save(TestFilter::PDF_WRITER);
 
     auto pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -5571,7 +5794,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testTdf162194SoftHyphen)
 // tdf#160786 - Tests that Calc format code with repeat char is measured 
correctly
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf160786)
 {
-    saveAsPDF(u"tdf160786.fods");
+    loadFromFile(u"tdf160786.fods");
+    save(TestFilter::PDF_WRITER);
 
     auto pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -5620,7 +5844,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf160786)
 // tdf#151748 - Textboxes should validate kashida positions
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf151748KashidaSpace)
 {
-    saveAsPDF(u"tdf151748.fodt");
+    loadFromFile(u"tdf151748.fodt");
+    save(TestFilter::PDF_WRITER);
 
     auto pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -5680,7 +5905,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testTdf151748KashidaSpace)
 // tdf#163105 - Writer kashida justification should expand spaces
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf163105SwKashidaSpaceExpansion)
 {
-    saveAsPDF(u"tdf163105-kashida-spaces.fodt");
+    loadFromFile(u"tdf163105-kashida-spaces.fodt");
+    save(TestFilter::PDF_WRITER);
 
     auto pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -5724,7 +5950,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testTdf163105SwKashidaSpaceExpansion)
 // tdf#163105 - Writer should use font information when choosing kashida 
positions
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf163105Writer)
 {
-    saveAsPDF(u"tdf163105-writer.fodt");
+    loadFromFile(u"tdf163105-writer.fodt");
+    save(TestFilter::PDF_WRITER);
 
     auto pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -5771,7 +5998,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf163105Writer)
 // tdf#163105 - Edit Engine should use font information when choosing kashida 
positions
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf163105Editeng)
 {
-    saveAsPDF(u"tdf163105-editeng.fodt");
+    loadFromFile(u"tdf163105-editeng.fodt");
+    save(TestFilter::PDF_WRITER);
 
     auto pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -5816,7 +6044,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf163105Editeng)
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf140767SyriacJustification)
 {
-    saveAsPDF(u"tdf140767.odt");
+    loadFromFile(u"tdf140767.odt");
+    save(TestFilter::PDF_WRITER);
 
     auto pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -5877,7 +6106,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testTdf140767SyriacJustification)
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf36709FirstLineIndentEm)
 {
-    saveAsPDF(u"tdf36709.fodt");
+    loadFromFile(u"tdf36709.fodt");
+    save(TestFilter::PDF_WRITER);
 
     auto pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -5948,7 +6178,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testTdf36709FirstLineIndentEm)
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf163913LeftRightMarginEm)
 {
-    saveAsPDF(u"tdf163913.fodt");
+    loadFromFile(u"tdf163913.fodt");
+    save(TestFilter::PDF_WRITER);
 
     auto pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -6019,12 +6250,14 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testFormRoundtrip)
     });
 
     // Need to properly set the PDF export options
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor["FilterName"] <<= OUString("draw_pdf_Export");
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "UseTaggedPDF", uno::Any(true) } 
}));
     aMediaDescriptor["FilterData"] <<= aFilterData;
 
-    saveAsPDF(u"FilledUpForm.pdf");
+    loadFromFile(u"FilledUpForm.pdf");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the round-tripped document with PDFium
     auto pPdfDocument = parsePDFExport();
@@ -6070,7 +6303,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testFormRoundtrip)
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf162750SmallCapsLigature)
 {
-    saveAsPDF(u"tdf162750.fodt");
+    loadFromFile(u"tdf162750.fodt");
+    save(TestFilter::PDF_WRITER);
 
     auto pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -6106,7 +6340,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testTdf162750SmallCapsLigature)
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf164106SplitReorderedClusters)
 {
-    saveAsPDF(u"tdf164106.fodt");
+    loadFromFile(u"tdf164106.fodt");
+    save(TestFilter::PDF_WRITER);
 
     auto pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -6162,9 +6397,11 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testPDFAttachmentsWithEncryptedFile)
         = { comphelper::makePropertyValue("IsAddStream", true),
             comphelper::makePropertyValue("EncryptFile", true),
             comphelper::makePropertyValue("DocumentOpenPassword", 
OUString("secret")) };
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor["FilterData"] <<= aFilterData;
 
-    saveAsPDF(u"SimpleTestDocument.fodt");
+    loadFromFile(u"SimpleTestDocument.fodt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the round-tripped document with PDFium
     auto pPdfDocument = parsePDFExport("secret"_ostr);
@@ -6221,7 +6458,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTextBoxRuby)
     // It is expected that this test will fail and need to be updated
     // as the feature is refined.
 
-    saveAsPDF(u"textbox-ruby.fodt");
+    loadFromFile(u"textbox-ruby.fodt");
+    save(TestFilter::PDF_WRITER);
 
     auto pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
@@ -6306,7 +6544,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTextBoxRuby)
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf166044ContFootnoteOnlyOnePgNum)
 {
-    saveAsPDF(u"tdf166044-cont-footnote-one-pgnum.fodt");
+    loadFromFile(u"tdf166044-cont-footnote-one-pgnum.fodt");
+    save(TestFilter::PDF_WRITER);
 
     auto pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(2, pPdfDocument->getPageCount());
@@ -6336,7 +6575,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testTdf166044ContFootnoteOnlyOnePgNum)
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf118350StartEndParaAlign)
 {
-    saveAsPDF(u"tdf118350-start-end-para-align.fodt");
+    loadFromFile(u"tdf118350-start-end-para-align.fodt");
+    save(TestFilter::PDF_WRITER);
 
     auto pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
commit 03bf70fabebc4333d0524d99d7fc3a43f410bdeb
Author:     Xisco Fauli <[email protected]>
AuthorDate: Tue Feb 3 16:21:45 2026 +0100
Commit:     Tomaž Vajngerl <[email protected]>
CommitDate: Tue Mar 10 02:09:44 2026 +0100

    CppunitTest_vcl_pdfexport: only use aMediaDescriptor where needed
    
    Change-Id: I60bf6754e7b221ec38618edd69dc3ad309f6a8e4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198612
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/201180
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Tomaž Vajngerl <[email protected]>

diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx 
b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
index 0837e4b3222a..221852bd9810 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
@@ -33,18 +33,13 @@ namespace
 /// Tests the PDF export filter.
 class PdfExportTest : public UnoApiTest
 {
-protected:
-    utl::MediaDescriptor aMediaDescriptor;
-
 public:
     PdfExportTest()
         : UnoApiTest(u"/vcl/qa/cppunit/pdfexport/data/"_ustr)
     {
     }
 
-    void saveAsPDF(std::u16string_view rFile);
-    void load(std::u16string_view rFile, vcl::filter::PDFDocument& rDocument);
-
+#if !defined MACOSX && !defined _WIN32
     std::unique_ptr<vcl::pdf::PDFiumDocument> parsePDFExportNoAssert()
     {
         SvFileStream aFile(maTempFile.GetURL(), StreamMode::READ);
@@ -55,31 +50,18 @@ public:
             return nullptr;
         return pPDFium->openDocument(maMemory.GetData(), maMemory.GetSize(), 
OString());
     }
+#endif
 };
 
-void PdfExportTest::saveAsPDF(std::u16string_view rFile)
-{
-    // Import the bugdoc and export as PDF.
-    loadFromFile(rFile);
-    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
-}
-
-void PdfExportTest::load(std::u16string_view rFile, vcl::filter::PDFDocument& 
rDocument)
-{
-    saveAsPDF(rFile);
-
-    // Parse the export result.
-    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
-    CPPUNIT_ASSERT(rDocument.Read(aStream));
-}
-
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testPopupRectangleSize)
 {
     // Enable Comment as PDF annotations
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "ExportNotes", uno::Any(true) } 
}));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
-    saveAsPDF(u"tdf162955_comment.odp");
+    loadFromFile(u"tdf162955_comment.odp");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -108,10 +90,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf160051)
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
},
                                            { "SelectPdfVersion", 
uno::Any(sal_Int32(17)) } }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf160051.odt", aDocument);
+    loadFromFile(u"tdf160051.odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
     CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), aPages.size());
@@ -148,10 +136,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testCommentAnnotation)
     // Enable PDF/UA and Comment as PDF annotations
     uno::Sequence<beans::PropertyValue> 
aFilterData(comphelper::InitPropertySequence(
         { { "PDFUACompliance", uno::Any(true) }, { "ExportNotes", 
uno::Any(true) } }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf162359.odt", aDocument);
+    loadFromFile(u"tdf162359.odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -208,7 +202,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testCommentAnnotation)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testFigurePlacement)
 {
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf159900_figurePlacement.odt", aDocument);
+    loadFromFile(u"tdf159900_figurePlacement.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -253,10 +252,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf106059)
     // Explicitly enable the usage of the reference XObject markup.
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "UseReferenceXObject", 
uno::Any(true) } }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf106059.odt", aDocument);
+    loadFromFile(u"tdf106059.odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // Assert that the XObject in the page resources dictionary is a reference 
XObject.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -281,7 +286,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf106059)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf106693)
 {
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf106693.odt", aDocument);
+    loadFromFile(u"tdf106693.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // Assert that the XObject in the page resources dictionary is a form 
XObject.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -327,7 +337,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf106693)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf105461)
 {
     // Import the bugdoc and export as PDF.
-    saveAsPDF(u"tdf105461.odp");
+    loadFromFile(u"tdf105461.odp");
+    save(TestFilter::PDF_WRITER);
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -403,7 +414,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf107868)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf105093)
 {
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf105093.odp", aDocument);
+    loadFromFile(u"tdf105093.odp");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -444,7 +460,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf106206)
 {
     // Import the bugdoc and export as PDF.
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf106206.odt", aDocument);
+    loadFromFile(u"tdf106206.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -485,8 +506,10 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf127217)
     uno::Sequence<beans::PropertyValue> 
aFilterData(comphelper::InitPropertySequence({
         { "ExportFormFields", uno::Any(true) },
     }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
-    saveAsPDF(u"tdf127217.odt");
+    loadFromFile(u"tdf127217.odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -510,8 +533,10 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf142741)
     uno::Sequence<beans::PropertyValue> 
aFilterData(comphelper::InitPropertySequence({
         { "ExportFormFields", uno::Any(true) },
     }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
-    saveAsPDF(u"tdf142741.odt");
+    loadFromFile(u"tdf142741.odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -540,7 +565,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf109143)
 {
     // Import the bugdoc and export as PDF.
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf109143.odt", aDocument);
+    loadFromFile(u"tdf109143.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -570,7 +600,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf106972)
 {
     // Import the bugdoc and export as PDF.
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf106972.odt", aDocument);
+    loadFromFile(u"tdf106972.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // Get access to the only form object on the only page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -609,7 +644,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf106972Pdf17)
 {
     // Import the bugdoc and export as PDF.
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf106972-pdf17.odt", aDocument);
+    loadFromFile(u"tdf106972-pdf17.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // Get access to the only image on the only page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -679,7 +719,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testSofthyphenPos)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf107013)
 {
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf107013.odt", aDocument);
+    loadFromFile(u"tdf107013.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // Get access to the only image on the only page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -699,7 +744,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf107013)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf107018)
 {
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf107018.odt", aDocument);
+    loadFromFile(u"tdf107018.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // Get access to the only image on the only page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -758,8 +808,10 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf148706)
     uno::Sequence<beans::PropertyValue> 
aFilterData(comphelper::InitPropertySequence({
         { "ExportFormFields", uno::Any(true) },
     }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
-    saveAsPDF(u"tdf148706.odt");
+    loadFromFile(u"tdf148706.odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -792,7 +844,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf148706)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf107089)
 {
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf107089.odt", aDocument);
+    loadFromFile(u"tdf107089.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // Get access to the only image on the only page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -839,7 +896,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf107089)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf99680)
 {
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf99680.odt", aDocument);
+    loadFromFile(u"tdf99680.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -880,7 +942,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf99680)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf99680_2)
 {
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf99680-2.odt", aDocument);
+    loadFromFile(u"tdf99680-2.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // For each document page
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -923,7 +990,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf99680_2)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf108963)
 {
     // Import the bugdoc and export as PDF.
-    saveAsPDF(u"tdf108963.odp");
+    loadFromFile(u"tdf108963.odp");
+    save(TestFilter::PDF_WRITER);
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -1000,7 +1068,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf108963)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testAlternativeText)
 {
     vcl::filter::PDFDocument aDocument;
-    load(u"alternativeText.fodp", aDocument);
+    loadFromFile(u"alternativeText.fodp");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -1041,9 +1114,15 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf105972)
     uno::Sequence<beans::PropertyValue> 
aFilterData(comphelper::InitPropertySequence({
         { "ExportFormFields", uno::Any(true) },
     }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf105972.fodt", aDocument);
+    loadFromFile(u"tdf105972.fodt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -1109,10 +1188,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf148442)
     uno::Sequence<beans::PropertyValue> 
aFilterData(comphelper::InitPropertySequence({
         { "ExportFormFields", uno::Any(true) },
     }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf148442.odt", aDocument);
+    loadFromFile(u"tdf148442.odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -1183,10 +1268,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, 
testTdf118244_radioButtonGroup)
     uno::Sequence<beans::PropertyValue> 
aFilterData(comphelper::InitPropertySequence({
         { "ExportFormFields", uno::Any(true) },
     }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf118244_radioButtonGroup.odt", aDocument);
+    loadFromFile(u"tdf118244_radioButtonGroup.odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -1228,7 +1319,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf115117_1)
 {
 #if HAVE_MORE_FONTS
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf115117-1.odt", aDocument);
+    loadFromFile(u"tdf115117-1.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     vcl::filter::PDFObjectElement* pToUnicode = nullptr;
 
@@ -1295,7 +1391,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf115117_2)
     // See the comments in testTdf115117_1() for explanation.
 
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf115117-2.odt", aDocument);
+    loadFromFile(u"tdf115117-2.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     vcl::filter::PDFObjectElement* pToUnicode = nullptr;
 
@@ -1346,7 +1447,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf115117_1a)
 {
 #if HAVE_MORE_FONTS
     // Import the bugdoc and export as PDF.
-    saveAsPDF(u"tdf115117-1.odt");
+    loadFromFile(u"tdf115117-1.odt");
+    save(TestFilter::PDF_WRITER);
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -1380,7 +1482,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf115117_2a)
     // See the comments in testTdf115117_1a() for explanation.
 
     // Import the bugdoc and export as PDF.
-    saveAsPDF(u"tdf115117-2.odt");
+    loadFromFile(u"tdf115117-2.odt");
+    save(TestFilter::PDF_WRITER);
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -1409,7 +1512,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf154549)
 {
 // FIXME: On Windows, the number of chars is 4 instead of 3
 #ifndef _WIN32
-    saveAsPDF(u"tdf154549.odt");
+    loadFromFile(u"tdf154549.odt");
+    save(TestFilter::PDF_WRITER);
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -1441,7 +1545,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf150846)
 {
     // Without the fix in place, this test would have failed with
     // An uncaught exception of type com.sun.star.io.IOException
-    saveAsPDF(u"tdf150846.txt");
+    loadFromFile(u"tdf150846.txt");
+    save(TestFilter::PDF_WRITER);
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -1466,7 +1571,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf150846)
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf160401)
 {
-    saveAsPDF(u"tdf160401.pptx");
+    loadFromFile(u"tdf160401.pptx");
+    save(TestFilter::PDF_WRITER);
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -1498,7 +1604,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf160401)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf103492)
 {
     // Import the bugdoc and export as PDF.
-    saveAsPDF(u"tdf103492.odt");
+    loadFromFile(u"tdf103492.odt");
+    save(TestFilter::PDF_WRITER);
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -1544,7 +1651,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf103492)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf145274)
 {
     // Import the bugdoc and export as PDF.
-    saveAsPDF(u"tdf145274.docx");
+    loadFromFile(u"tdf145274.docx");
+    save(TestFilter::PDF_WRITER);
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -1578,7 +1686,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf145274)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf156685)
 {
     // Import the bugdoc and export as PDF.
-    saveAsPDF(u"tdf156685.docx");
+    loadFromFile(u"tdf156685.docx");
+    save(TestFilter::PDF_WRITER);
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -1616,7 +1725,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf66597_1)
 #if HAVE_MORE_FONTS
     // This requires Amiri font, if it is missing the test will fail.
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf66597-1.odt", aDocument);
+    loadFromFile(u"tdf66597-1.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     {
         // Get access to ToUnicode of the first font
@@ -1712,7 +1826,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf66597_2)
 {
 #if HAVE_MORE_FONTS
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf66597-2.odt", aDocument);
+    loadFromFile(u"tdf66597-2.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     {
         // Get access to ToUnicode of the first font
@@ -1827,7 +1946,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf66597_3)
 {
 #if HAVE_MORE_FONTS
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf66597-3.odt", aDocument);
+    loadFromFile(u"tdf66597-3.odt");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     {
         // Get access to ToUnicode of the first font
@@ -1915,8 +2039,10 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf105954)
     uno::Sequence<beans::PropertyValue> 
aFilterData(comphelper::InitPropertySequence(
         { { "ReduceImageResolution", uno::Any(true) },
           { "MaxImageResolution", uno::Any(static_cast<sal_Int32>(300)) } }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
-    saveAsPDF(u"tdf105954.odt");
+    loadFromFile(u"tdf105954.odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
@@ -1941,7 +2067,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf105954)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf157679)
 {
     // Import the bugdoc and export as PDF.
-    saveAsPDF(u"tdf157679.pptx");
+    loadFromFile(u"tdf157679.pptx");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
 
     // The document has one page.
@@ -1968,7 +2095,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf157679)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf128445)
 {
     // Import the bugdoc and export as PDF.
-    saveAsPDF(u"tdf128445.odp");
+    loadFromFile(u"tdf128445.odp");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
 
     // The document has one page.
@@ -1991,7 +2119,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf128630)
         return;
 
     // Import the bugdoc and export as PDF.
-    saveAsPDF(u"tdf128630.odp");
+    loadFromFile(u"tdf128630.odp");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
 
     // The document has one page.
@@ -2023,7 +2152,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf128630)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf106702)
 {
     // Import the bugdoc and export as PDF.
-    saveAsPDF(u"tdf106702.odt");
+    loadFromFile(u"tdf106702.odt");
+    save(TestFilter::PDF_WRITER);
 
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
 
@@ -2077,8 +2207,10 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf113143)
         // Set a custom PDF version.
         { "SelectPdfVersion", uno::Any(static_cast<sal_Int32>(16)) },
     }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
-    saveAsPDF(u"tdf113143.odp");
+    loadFromFile(u"tdf113143.odp");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
 
@@ -2135,30 +2267,35 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testForcePoint71)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testForcePoint80)
 {
     // printing asserted in SwCellFrame::FindStartEndOfRowSpanCell
-    saveAsPDF(u"forcepoint80-1.rtf");
+    loadFromFile(u"forcepoint80-1.rtf");
+    save(TestFilter::PDF_WRITER);
 }
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testForcePoint3)
 {
     // printing asserted in SwFrame::GetNextSctLeaf()
-    saveAsPDF(u"flowframe_null_ptr_deref.sample");
+    loadFromFile(u"flowframe_null_ptr_deref.sample");
+    save(TestFilter::PDF_WRITER);
 }
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf162586)
 {
     // Without the fix in place, this test would have crashed
-    saveAsPDF(u"tdf162586.odt");
+    loadFromFile(u"tdf162586.odt");
+    save(TestFilter::PDF_WRITER);
 }
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf84283)
 {
     // Without the fix in place, this test would have crashed
-    saveAsPDF(u"tdf84283.doc");
+    loadFromFile(u"tdf84283.doc");
+    save(TestFilter::PDF_WRITER);
 }
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf115262)
 {
-    saveAsPDF(u"tdf115262.ods");
+    loadFromFile(u"tdf115262.ods");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(8, pPdfDocument->getPageCount());
 
@@ -2196,7 +2333,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf115262)
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf121962)
 {
-    saveAsPDF(u"tdf121962.odt");
+    loadFromFile(u"tdf121962.odt");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
 
@@ -2219,7 +2357,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf121962)
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf139065)
 {
-    saveAsPDF(u"tdf139065.odt");
+    loadFromFile(u"tdf139065.odt");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
     std::unique_ptr<vcl::pdf::PDFiumPage> pPdfPage = 
pPdfDocument->openPage(/*nIndex=*/0);
@@ -2236,10 +2375,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf157816)
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf157816.fodt", aDocument);
+    loadFromFile(u"tdf157816.fodt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -2632,10 +2777,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf157816Link)
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"LinkWithFly.fodt", aDocument);
+    loadFromFile(u"LinkWithFly.fodt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -2975,7 +3126,12 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf157816Link)
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf142133)
 {
     vcl::filter::PDFDocument aDocument;
-    load(u"tdf142133.docx", aDocument);
+    loadFromFile(u"tdf142133.docx");
+    save(TestFilter::PDF_WRITER);
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     // The document has one page.
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
@@ -3012,10 +3168,16 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf142806)
     // Enable PDF/UA
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
 
     vcl::filter::PDFDocument aDocument;
-    load(u"LinkPages.fodt", aDocument);
+    loadFromFile(u"LinkPages.fodt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
+
+    // Parse the export result.
+    SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
+    CPPUNIT_ASSERT(aDocument.Read(aStream));
 
     std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages();
     CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(4), aPages.size());
@@ -3612,7 +3774,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf142806)
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf115967)
 {
-    saveAsPDF(u"tdf115967.odt");
+    loadFromFile(u"tdf115967.odt");
+    save(TestFilter::PDF_WRITER);
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();
     CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount());
 
@@ -3641,8 +3804,10 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf167659)
     // Don't export showing tracked changes to PDF
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "ExportTrackedChanges", 
uno::Any(false) } }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
-    saveAsPDF(u"tdf167659.odt");
+    loadFromFile(u"tdf167659.odt");
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result with pdfium.
     std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport();

Reply via email to