vcl/qa/cppunit/pdfexport/pdfexport2.cxx | 448 ++++++++++++++++++++++++-------- 1 file changed, 344 insertions(+), 104 deletions(-)
New commits: commit 0146833a7cba60fdbe4c6ef23b0b57adc947fc87 Author: Xisco Fauli <[email protected]> AuthorDate: Tue Feb 3 16:52:11 2026 +0100 Commit: Xisco Fauli <[email protected]> CommitDate: Tue Feb 3 21:05:40 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]> diff --git a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx index 122a0a68cf99..aad9c78a0f68 100644 --- a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx +++ b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx @@ -59,44 +59,28 @@ namespace /// Tests the PDF export filter. class PdfExportTest2 : public UnoApiTest { -protected: - comphelper::SequenceAsHashMap 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(); @@ -156,10 +140,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(); @@ -214,7 +204,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(); @@ -246,7 +241,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(); @@ -294,7 +294,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()) @@ -339,7 +344,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()); @@ -352,10 +362,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(); @@ -429,7 +445,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); @@ -453,7 +470,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); @@ -467,7 +485,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); @@ -516,7 +535,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); @@ -531,7 +551,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); @@ -545,7 +566,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); @@ -609,7 +631,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. @@ -636,8 +659,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(); @@ -656,9 +681,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(); @@ -672,7 +699,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. @@ -771,6 +799,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()); @@ -788,6 +817,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()); @@ -821,7 +851,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()); @@ -958,8 +993,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(); @@ -1006,7 +1043,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(); @@ -1196,7 +1238,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(); @@ -1255,7 +1302,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(); @@ -1335,10 +1387,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); @@ -1409,10 +1467,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()); @@ -1512,9 +1576,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()); @@ -1619,6 +1689,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()); @@ -1703,9 +1774,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(); @@ -1756,10 +1833,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(); @@ -1897,10 +1980,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(); @@ -2066,10 +2155,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(); @@ -2156,10 +2251,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(); @@ -2230,10 +2331,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(); @@ -2744,9 +2851,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 } @@ -2756,10 +2865,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(); @@ -2855,10 +2970,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(); @@ -2931,10 +3052,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(); @@ -3253,10 +3380,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(); @@ -3380,9 +3513,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(); @@ -3508,10 +3647,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(); @@ -3592,10 +3737,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(); @@ -3726,10 +3877,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(); @@ -3856,10 +4013,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(); @@ -3988,6 +4151,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()); @@ -4123,7 +4287,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. @@ -4162,7 +4327,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(); @@ -4196,7 +4362,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(); @@ -4314,6 +4481,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) @@ -4373,7 +4541,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(); @@ -4408,6 +4577,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()); @@ -4436,7 +4606,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(); @@ -4465,7 +4636,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. @@ -4550,7 +4722,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()); @@ -4587,11 +4764,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()); @@ -4641,7 +4824,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()); @@ -4705,7 +4893,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()); @@ -4741,9 +4934,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(); @@ -4792,7 +4991,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; @@ -4831,7 +5035,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(); @@ -4861,7 +5066,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(); @@ -4893,7 +5099,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 @@ -4992,8 +5199,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(); @@ -5042,7 +5251,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()); @@ -5090,7 +5300,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()); @@ -5146,7 +5357,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()); @@ -5203,7 +5415,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()); @@ -5266,7 +5479,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()); @@ -5320,7 +5534,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()); @@ -5372,7 +5591,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()); @@ -5425,7 +5645,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()); @@ -5480,7 +5701,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()); @@ -5535,7 +5757,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()); @@ -5575,7 +5798,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()); @@ -5624,7 +5848,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()); @@ -5684,7 +5909,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()); @@ -5728,7 +5954,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()); @@ -5775,7 +6002,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()); @@ -5820,7 +6048,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()); @@ -5881,7 +6110,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()); @@ -5952,7 +6182,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()); @@ -6023,12 +6254,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(); @@ -6074,7 +6307,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()); @@ -6110,7 +6344,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()); @@ -6166,9 +6401,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); @@ -6225,7 +6462,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()); @@ -6310,7 +6548,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()); @@ -6340,7 +6579,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());
