include/test/unoapi_test.hxx               |    2 +-
 sw/qa/extras/globalfilter/globalfilter.cxx |    3 +++
 sw/qa/extras/uiwriter/uiwriter9.cxx        |    1 +
 test/source/unoapi_test.cxx                |   18 ++++++++++++++++--
 vcl/qa/cppunit/pdfexport/pdfexport.cxx     |    6 +++---
 vcl/qa/cppunit/pdfexport/pdfexport2.cxx    |   28 +++++++++++++---------------
 6 files changed, 37 insertions(+), 21 deletions(-)

New commits:
commit d9035e3cbd3d17b9d5ea06088df23e5969a2cc37
Author:     Xisco Fauli <[email protected]>
AuthorDate: Mon Feb 23 13:47:44 2026 +0100
Commit:     Xisco Fauli <[email protected]>
CommitDate: Mon Feb 23 18:29:05 2026 +0100

    UnoApiTest: validate PDF/UA, PDF/A-1b, PDF/A-2b or PDF/A-3b by default
    
    Change-Id: I984b5fb16bf36beb9468940a7d34248b17eaa3f4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200051
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>

diff --git a/include/test/unoapi_test.hxx b/include/test/unoapi_test.hxx
index 664d12994a71..301e691509b5 100644
--- a/include/test/unoapi_test.hxx
+++ b/include/test/unoapi_test.hxx
@@ -189,9 +189,9 @@ protected:
 
     rtl::Reference<TestInteractionHandler> xInteractionHandler;
 
+private:
     void validate(TestFilter eFilter);
 
-private:
     bool mbSkipValidation;
     OUString m_aBaseString;
 
diff --git a/sw/qa/extras/globalfilter/globalfilter.cxx 
b/sw/qa/extras/globalfilter/globalfilter.cxx
index 03f52cd58d61..580d07f221bb 100644
--- a/sw/qa/extras/globalfilter/globalfilter.cxx
+++ b/sw/qa/extras/globalfilter/globalfilter.cxx
@@ -1392,6 +1392,7 @@ CPPUNIT_TEST_FIXTURE(Test, testListLabelPDFExport)
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
+    skipValidation();
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result with pdfium.
@@ -1797,6 +1798,7 @@ CPPUNIT_TEST_FIXTURE(Test, 
testTableOfContentLinksHaveContentSet)
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
+    skipValidation();
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result with pdfium.
@@ -1859,6 +1861,7 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf143311)
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
+    skipValidation();
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     vcl::filter::PDFDocument aDocument;
diff --git a/sw/qa/extras/uiwriter/uiwriter9.cxx 
b/sw/qa/extras/uiwriter/uiwriter9.cxx
index b749a795ef2f..281fd974e61f 100644
--- a/sw/qa/extras/uiwriter/uiwriter9.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter9.cxx
@@ -764,6 +764,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest9, testPDFExportCrash)
 
     uno::Sequence<beans::PropertyValue> aFilterData(
         comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) 
} }));
+    skipValidation();
 
     // Without the fix in place, this test would have crashed here
     save(TestFilter::PDF_WRITER, {
diff --git a/test/source/unoapi_test.cxx b/test/source/unoapi_test.cxx
index 8ae3b29f8073..1717b93cdf2e 100644
--- a/test/source/unoapi_test.cxx
+++ b/test/source/unoapi_test.cxx
@@ -371,8 +371,22 @@ void UnoApiTest::save(TestFilter eFilter, const 
uno::Sequence<beans::PropertyVal
     css::uno::Reference<frame::XStorable> xStorable(mxComponent, 
css::uno::UNO_QUERY_THROW);
     xStorable->storeToURL(maTempFile.GetURL(), 
aMediaDescriptor.getAsConstPropertyValueList());
 
-    // FIXME: Don't validate pdf files by default for now
-    if (!mbSkipValidation && eFilter != TestFilter::PDF_WRITER)
+    if (eFilter == TestFilter::PDF_WRITER)
+    {
+        comphelper::SequenceAsHashMap aFilterData;
+        if (aMediaDescriptor.contains(u"FilterData"_ustr))
+            aFilterData = aMediaDescriptor[u"FilterData"_ustr];
+        bool bPDFUACompliance(
+            aFilterData.getUnpackedValueOrDefault(u"PDFUACompliance"_ustr, 
false));
+        sal_Int32 nSelectPdfVersion(
+            aFilterData.getUnpackedValueOrDefault(u"SelectPdfVersion"_ustr, 
sal_Int32(0)));
+        // Only validate PDF/UA, PDF/A-1b, PDF/A-2b or PDF/A-3b
+        if (!bPDFUACompliance && nSelectPdfVersion != 1 && nSelectPdfVersion 
!= 2
+            && nSelectPdfVersion != 3)
+            skipValidation();
+    }
+
+    if (!mbSkipValidation)
         validate(eFilter);
 }
 
diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx 
b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
index ad1e4fc7949c..614952087a2f 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
@@ -122,6 +122,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf160051)
 
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"tdf160051.odt");
+
+    skipValidation();
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result.
@@ -168,6 +170,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testCommentAnnotation)
 
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"tdf162359.odt");
+    skipValidation();
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result.
@@ -2481,7 +2484,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf157816)
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"tdf157816.fodt");
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
-    validate(TestFilter::PDF_WRITER);
 
     // Parse the export result.
     SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
@@ -2884,7 +2886,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf157816Link)
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"LinkWithFly.fodt");
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
-    validate(TestFilter::PDF_WRITER);
 
     // Parse the export result.
     SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
@@ -3276,7 +3277,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf142806)
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"LinkPages.fodt");
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
-    validate(TestFilter::PDF_WRITER);
 
     // Parse the export result.
     SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
diff --git a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx 
b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
index b83cd1412a4c..c3277eda75d7 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
@@ -76,6 +76,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf160705)
 
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"tdf160705.odt");
+    skipValidation();
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result.
@@ -145,6 +146,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf159895)
 
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"tdf159895.odt");
+    skipValidation();
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result.
@@ -1392,6 +1394,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testPdfUaMetadata)
 
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"BrownFoxLazyDog.odt");
+    skipValidation();
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result.
@@ -1473,7 +1476,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf139736)
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"tdf139736-1.odt");
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
-    validate(TestFilter::PDF_WRITER);
 
     // Parse the export result.
     SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
@@ -1581,6 +1583,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf152231)
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"tdf152231.fodt");
+    skipValidation();
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result.
@@ -1690,9 +1693,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf136805)
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"tdf136805.pdf");
-    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
     // Without the fix in place, the validation would have failed
-    validate(TestFilter::PDF_WRITER);
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 }
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf157517)
@@ -1706,9 +1708,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf157517)
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"tdf157517.odt");
-    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
     // Without the fix in place, the validation would have failed
-    validate(TestFilter::PDF_WRITER);
+    save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 }
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf152235)
@@ -1723,6 +1724,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf152235)
     comphelper::SequenceAsHashMap aMediaDescriptor;
     aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData;
     loadFromURL(u"private:factory/swriter"_ustr);
+    skipValidation();
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     vcl::filter::PDFDocument aDocument;
@@ -1810,7 +1812,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf167290)
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"tdf167290.odt");
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
-    validate(TestFilter::PDF_WRITER);
 }
 
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf149140)
@@ -1823,7 +1824,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf149140)
     vcl::filter::PDFDocument aDocument;
     
loadFromFile(u"TableTH_test_LibreOfficeWriter7.3.3_HeaderRow-HeadersInTopRow.fodt");
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
-    validate(TestFilter::PDF_WRITER);
 
     // Parse the export result.
     SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
@@ -1884,7 +1884,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testNestedSection)
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"nestedsection.fodt");
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
-    validate(TestFilter::PDF_WRITER);
 
     // Parse the export result.
     SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
@@ -2031,6 +2030,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf157817)
 
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"SimpleTOC.fodt");
+    skipValidation();
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result.
@@ -2206,6 +2206,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf135638)
 
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"image-shape.fodt");
+    skipValidation();
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result.
@@ -2302,6 +2303,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf157703)
 
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"LO_Lbl_Lbody_bug_report.fodt");
+    skipValidation();
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result.
@@ -2382,6 +2384,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testSpans)
 
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"spanlist.fodt");
+    skipValidation();
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result.
@@ -2916,6 +2919,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf57423)
 
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"Description PDF Export test .odt");
+    skipValidation();
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result.
@@ -3022,7 +3026,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf154982)
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"tdf154982.odt");
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
-    validate(TestFilter::PDF_WRITER);
 
     // Parse the export result.
     SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
@@ -3104,6 +3107,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf157397)
 
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"PDF_export_with_formcontrol.fodt");
+    skipValidation();
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result.
@@ -3433,7 +3437,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf135192)
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"tdf135192-1.fodp");
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
-    validate(TestFilter::PDF_WRITER);
 
     // Parse the export result.
     SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
@@ -3566,7 +3569,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf154955)
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"grouped-shape.fodt");
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
-    validate(TestFilter::PDF_WRITER);
 
     // Parse the export result.
     SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
@@ -3702,7 +3704,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf155190)
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"tdf155190.odt");
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
-    validate(TestFilter::PDF_WRITER);
 
     // Parse the export result.
     SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
@@ -3793,7 +3794,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testMediaShapeAnnot)
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"vid.odt");
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
-    validate(TestFilter::PDF_WRITER);
 
     // Parse the export result.
     SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
@@ -3934,7 +3934,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, 
testFlyFrameHyperlinkAnnot)
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"image-hyperlink-alttext.fodt");
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
-    validate(TestFilter::PDF_WRITER);
 
     // Parse the export result.
     SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
@@ -4071,7 +4070,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testFormControlAnnot)
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"formcontrol.fodt");
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
-    validate(TestFilter::PDF_WRITER);
 
     // Parse the export result.
     SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);

Reply via email to