officecfg/registry/schema/org/openoffice/Office/Common.xcs | 2 sc/qa/uitest/calc_tests4/exportToPDF.py | 5 - sd/qa/uitest/impress_tests/exportToPDF.py | 5 - sw/qa/uitest/writer_tests4/exportToPDF.py | 5 - vcl/qa/cppunit/pdfexport/pdfexport.cxx | 45 +++++++------ 5 files changed, 37 insertions(+), 25 deletions(-)
New commits: commit 544d6d781b3c8aa108ced362d708693b5127f3d7 Author: Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de> AuthorDate: Mon Mar 6 09:55:12 2023 +0100 Commit: Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de> CommitDate: Mon Mar 13 09:25:32 2023 +0000 tdf#39667 Enable tagged PDF by default And adjust some tests accordingly Change-Id: If81803ba48485273939f419ad589dc6dd2e9c531 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148303 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@allotropia.de> diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs index 0332feaeef07..d59cb26b01e7 100644 --- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs @@ -5063,7 +5063,7 @@ <desc>Determines if PDF are created by using special tags also known as Tagged PDF.</desc> </info> - <value>false</value> + <value>true</value> </prop> <prop oor:name="ExportNotes" oor:type="xs:boolean" oor:nillable="false"> <info> diff --git a/sc/qa/uitest/calc_tests4/exportToPDF.py b/sc/qa/uitest/calc_tests4/exportToPDF.py index ef79a0ce7790..e44d80be0ef4 100644 --- a/sc/qa/uitest/calc_tests4/exportToPDF.py +++ b/sc/qa/uitest/calc_tests4/exportToPDF.py @@ -34,14 +34,15 @@ class exportToPDF(UITestCase): # Export as PDF with self.ui_test.execute_dialog_through_command('.uno:ExportToPDF', close_button="") as xDialog: - selectedChildren = ['bookmarks', 'display', 'effects', 'enablea11y', 'enablecopy', 'exporturl', 'forms', 'reduceresolution'] + selectedChildren = ['bookmarks', 'display', 'effects', 'enablea11y', + 'enablecopy', 'exporturl', 'forms', 'reduceresolution', 'tagged'] for child in selectedChildren: self.assertEqual("true", get_state_as_dict(xDialog.getChild(child))['Selected']) nonSelectedChildren = ['allowdups', 'center', 'comments', 'convert', 'embed', 'emptypages', 'export', 'exportplaceholders', 'firstonleft', 'hiddenpages', 'menubar', 'notes', 'onlynotes', 'open', 'pdfa', 'pdfua', 'resize', 'singlepagesheets', - 'tagged', 'toolbar', 'usereferencexobject', 'viewpdf', 'watermark', 'window'] + 'toolbar', 'usereferencexobject', 'viewpdf', 'watermark', 'window'] for child in nonSelectedChildren: self.assertEqual("false", get_state_as_dict(xDialog.getChild(child))['Selected']) diff --git a/sd/qa/uitest/impress_tests/exportToPDF.py b/sd/qa/uitest/impress_tests/exportToPDF.py index 3621ad0fb8f5..f1240fabf165 100644 --- a/sd/qa/uitest/impress_tests/exportToPDF.py +++ b/sd/qa/uitest/impress_tests/exportToPDF.py @@ -36,14 +36,15 @@ class exportToPDF(UITestCase): # Export as PDF with self.ui_test.execute_dialog_through_command('.uno:ExportToPDF', close_button="") as xDialog: - selectedChildren = ['bookmarks', 'display', 'effects', 'enablea11y', 'enablecopy', 'exporturl', 'forms', 'reduceresolution'] + selectedChildren = ['bookmarks', 'display', 'effects', 'enablea11y', + 'enablecopy', 'exporturl', 'forms', 'reduceresolution', 'tagged'] for child in selectedChildren: self.assertEqual("true", get_state_as_dict(xDialog.getChild(child))['Selected']) nonSelectedChildren = ['allowdups', 'center', 'comments', 'convert', 'embed', 'emptypages', 'export', 'exportplaceholders', 'firstonleft', 'hiddenpages', 'menubar', 'notes', 'onlynotes', 'open', 'pdfa', 'pdfua', 'resize', 'singlepagesheets', - 'tagged', 'toolbar', 'usereferencexobject', 'viewpdf', 'watermark', 'window'] + 'toolbar', 'usereferencexobject', 'viewpdf', 'watermark', 'window'] for child in nonSelectedChildren: self.assertEqual("false", get_state_as_dict(xDialog.getChild(child))['Selected']) diff --git a/sw/qa/uitest/writer_tests4/exportToPDF.py b/sw/qa/uitest/writer_tests4/exportToPDF.py index f18aecca8cc9..18eb56c75615 100644 --- a/sw/qa/uitest/writer_tests4/exportToPDF.py +++ b/sw/qa/uitest/writer_tests4/exportToPDF.py @@ -32,14 +32,15 @@ class exportToPDF(UITestCase): # Export as PDF with self.ui_test.execute_dialog_through_command('.uno:ExportToPDF', close_button="") as xDialog: - selectedChildren = ['bookmarks', 'display', 'effects', 'enablea11y', 'enablecopy', 'exporturl', 'forms', 'reduceresolution'] + selectedChildren = ['bookmarks', 'display', 'effects', 'enablea11y', + 'enablecopy', 'exporturl', 'forms', 'reduceresolution', 'tagged'] for child in selectedChildren: self.assertEqual("true", get_state_as_dict(xDialog.getChild(child))['Selected']) nonSelectedChildren = ['allowdups', 'center', 'comments', 'convert', 'embed', 'emptypages', 'export', 'exportplaceholders', 'firstonleft', 'hiddenpages', 'menubar', 'notes', 'onlynotes', 'open', 'pdfa', 'pdfua', 'resize', 'singlepagesheets', - 'tagged', 'toolbar', 'usereferencexobject', 'viewpdf', 'watermark', 'window'] + 'toolbar', 'usereferencexobject', 'viewpdf', 'watermark', 'window'] for child in nonSelectedChildren: self.assertEqual("false", get_state_as_dict(xDialog.getChild(child))['Selected']) diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx b/vcl/qa/cppunit/pdfexport/pdfexport.cxx index 37b4c1feece0..ed27ecac3bbf 100644 --- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx +++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx @@ -64,7 +64,8 @@ public: } void saveAsPDF(std::u16string_view rFile); - void load(std::u16string_view rFile, vcl::filter::PDFDocument& rDocument); + void load(std::u16string_view rFile, vcl::filter::PDFDocument& rDocument, + bool bUseTaggedPDF = true); }; void PdfExportTest::saveAsPDF(std::u16string_view rFile) @@ -75,9 +76,13 @@ void PdfExportTest::saveAsPDF(std::u16string_view rFile) xStorable->storeToURL(maTempFile.GetURL(), aMediaDescriptor.getAsConstPropertyValueList()); } -void PdfExportTest::load(std::u16string_view rFile, vcl::filter::PDFDocument& rDocument) +void PdfExportTest::load(std::u16string_view rFile, vcl::filter::PDFDocument& rDocument, + bool bUseTaggedPDF) { aMediaDescriptor["FilterName"] <<= OUString("writer_pdf_Export"); + uno::Sequence<beans::PropertyValue> aFilterData( + comphelper::InitPropertySequence({ { "UseTaggedPDF", uno::Any(bUseTaggedPDF) } })); + aMediaDescriptor["FilterData"] <<= aFilterData; saveAsPDF(rFile); // Parse the export result. @@ -855,7 +860,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testAlternativeText) CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf105972) { vcl::filter::PDFDocument aDocument; - load(u"tdf105972.fodt", aDocument); + // Loading fails with tagged PDF enabled + load(u"tdf105972.fodt", aDocument, false); // The document has one page. std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages(); @@ -920,7 +926,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf105972) CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf148442) { vcl::filter::PDFDocument aDocument; - load(u"tdf148442.odt", aDocument); + // Loading fails with tagged PDF enabled + load(u"tdf148442.odt", aDocument, false); // The document has one page. std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages(); @@ -987,7 +994,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf148442) CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf118244_radioButtonGroup) { vcl::filter::PDFDocument aDocument; - load(u"tdf118244_radioButtonGroup.odt", aDocument); + // Loading fails with tagged PDF enabled + load(u"tdf118244_radioButtonGroup.odt", aDocument, false); // The document has one page. std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages(); @@ -2551,7 +2559,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testMultiPagePDF) { // embedded PDF page 1 vcl::filter::PDFObjectElement* pXObject1 = pXObjects->LookupObject(rIDs[0]); CPPUNIT_ASSERT(pXObject1); - CPPUNIT_ASSERT_EQUAL(OString("Im19"), rIDs[0]); + CPPUNIT_ASSERT_EQUAL(OString("Im21"), rIDs[0]); auto pSubtype1 = dynamic_cast<vcl::filter::PDFNameElement*>(pXObject1->Lookup("Subtype")); CPPUNIT_ASSERT(pSubtype1); @@ -2579,7 +2587,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testMultiPagePDF) { // embedded PDF page 2 vcl::filter::PDFObjectElement* pXObject2 = pXObjects->LookupObject(rIDs[1]); CPPUNIT_ASSERT(pXObject2); - CPPUNIT_ASSERT_EQUAL(OString("Im24"), rIDs[1]); + CPPUNIT_ASSERT_EQUAL(OString("Im27"), rIDs[1]); auto pSubtype2 = dynamic_cast<vcl::filter::PDFNameElement*>(pXObject2->Lookup("Subtype")); CPPUNIT_ASSERT(pSubtype2); @@ -2607,7 +2615,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testMultiPagePDF) { // embedded PDF page 3 vcl::filter::PDFObjectElement* pXObject3 = pXObjects->LookupObject(rIDs[2]); CPPUNIT_ASSERT(pXObject3); - CPPUNIT_ASSERT_EQUAL(OString("Im4"), rIDs[2]); + CPPUNIT_ASSERT_EQUAL(OString("Im5"), rIDs[2]); auto pSubtype3 = dynamic_cast<vcl::filter::PDFNameElement*>(pXObject3->Lookup("Subtype")); CPPUNIT_ASSERT(pSubtype3); @@ -2714,7 +2722,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testReexportPDF) { // FORM object 1 OString aID = rIDs[0]; - CPPUNIT_ASSERT_EQUAL(OString("Im12"), aID); + CPPUNIT_ASSERT_EQUAL(OString("Im14"), aID); vcl::filter::PDFObjectElement* pXObject = pXObjects->LookupObject(aID); CPPUNIT_ASSERT(pXObject); @@ -2730,7 +2738,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testReexportPDF) CPPUNIT_ASSERT(pInnerXObjects); CPPUNIT_ASSERT_EQUAL(size_t(1), pInnerXObjects->GetItems().size()); OString aInnerObjectID = pInnerXObjects->GetItems().begin()->first; - CPPUNIT_ASSERT_EQUAL(OString("Im13"), aInnerObjectID); + CPPUNIT_ASSERT_EQUAL(OString("Im15"), aInnerObjectID); vcl::filter::PDFObjectElement* pInnerXObject = pInnerXObjects->LookupObject(aInnerObjectID); @@ -2790,7 +2798,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testReexportPDF) { // FORM object 2 OString aID = rIDs[1]; - CPPUNIT_ASSERT_EQUAL(OString("Im4"), aID); + CPPUNIT_ASSERT_EQUAL(OString("Im5"), aID); vcl::filter::PDFObjectElement* pXObject = pXObjects->LookupObject(aID); CPPUNIT_ASSERT(pXObject); @@ -2806,7 +2814,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testReexportPDF) CPPUNIT_ASSERT(pInnerXObjects); CPPUNIT_ASSERT_EQUAL(size_t(1), pInnerXObjects->GetItems().size()); OString aInnerObjectID = pInnerXObjects->GetItems().begin()->first; - CPPUNIT_ASSERT_EQUAL(OString("Im5"), aInnerObjectID); + CPPUNIT_ASSERT_EQUAL(OString("Im6"), aInnerObjectID); vcl::filter::PDFObjectElement* pInnerXObject = pInnerXObjects->LookupObject(aInnerObjectID); @@ -2897,7 +2905,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testReexportDocumentWithComplexResources) CPPUNIT_ASSERT_EQUAL(size_t(1), aPages.size()); // Go directly to the Font object (24 0) (number could change if we change how PDF export works) - auto pFont = aDocument.LookupObject(23); + auto pFont = aDocument.LookupObject(24); CPPUNIT_ASSERT(pFont); // Check it is the Font object (Type = Font) @@ -4172,7 +4180,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testRexportFilterSingletonArray) // Load the PDF and save as PDF vcl::filter::PDFDocument aDocument; - load(u"ref-to-kids.pdf", aDocument); + // Loading fails with tagged PDF enabled + load(u"ref-to-kids.pdf", aDocument, false); std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages(); CPPUNIT_ASSERT_EQUAL(size_t(5), aPages.size()); @@ -4227,8 +4236,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testRexportMediaBoxOrigin) std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages(); CPPUNIT_ASSERT_EQUAL(size_t(5), aPages.size()); - // Directly go to the inner XObject Im10 that contains the rectangle drawings in page 2. - auto pInnerIm = aDocument.LookupObject(10); + // Directly go to the inner XObject Im12 that contains the rectangle drawings in page 2. + auto pInnerIm = aDocument.LookupObject(12); CPPUNIT_ASSERT(pInnerIm); constexpr sal_Int32 aOrigin[2] = { -800, -600 }; @@ -4288,8 +4297,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testRexportResourceItemReference) std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages(); CPPUNIT_ASSERT_EQUAL(size_t(5), aPages.size()); - // Directly go to the inner XObject Im10 that has reference to Font in page 2. - auto pInnerIm = aDocument.LookupObject(10); + // Directly go to the inner XObject Im12 that has reference to Font in page 2. + auto pInnerIm = aDocument.LookupObject(12); CPPUNIT_ASSERT(pInnerIm); auto pResources