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();
