test/source/unoapi_test.cxx                 |    6 +++++-
 vcl/qa/cppunit/pdfexport/data/tdf157517.odt |binary
 vcl/qa/cppunit/pdfexport/pdfexport2.cxx     |   16 ++++++++++++++++
 3 files changed, 21 insertions(+), 1 deletion(-)

New commits:
commit b800fe78024c6f5e0a39d38c2deb0dca4f6c74cf
Author:     Xisco Fauli <[email protected]>
AuthorDate: Fri Feb 20 17:49:28 2026 +0100
Commit:     Xisco Fauli <[email protected]>
CommitDate: Sat Feb 21 07:31:04 2026 +0100

    tdf#157517: vcl_pdfexport2: Add test
    
    Change-Id: I9084c5b57e1d59064f026b3f391444ce60fad552
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199899
    Reviewed-by: Xisco Fauli <[email protected]>
    Tested-by: Jenkins

diff --git a/test/source/unoapi_test.cxx b/test/source/unoapi_test.cxx
index ebd4a3f00cff..8ae3b29f8073 100644
--- a/test/source/unoapi_test.cxx
+++ b/test/source/unoapi_test.cxx
@@ -214,7 +214,11 @@ void UnoApiTest::validate(TestFilter eFilter)
         xmlDocUniquePtr pXmlDoc = parseXmlStream(&aStream);
         // Make sure the output is well-formed.
         CPPUNIT_ASSERT(pXmlDoc);
-        assertXPath(pXmlDoc, "/report/jobs/job/validationReport", 
"isCompliant", u"true");
+        int nCount = countXPathNodes(pXmlDoc, 
"/report/jobs/job/validationReport");
+        CPPUNIT_ASSERT(nCount);
+        for (int i = 1; i <= nCount; ++i)
+            assertXPath(pXmlDoc, "/report/jobs/job/validationReport[" + 
OString::number(i) + "]",
+                        "isCompliant", u"true");
     }
     else
     {
diff --git a/vcl/qa/cppunit/pdfexport/data/tdf157517.odt 
b/vcl/qa/cppunit/pdfexport/data/tdf157517.odt
new file mode 100644
index 000000000000..50a820a1ad7a
Binary files /dev/null and b/vcl/qa/cppunit/pdfexport/data/tdf157517.odt differ
diff --git a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx 
b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
index 9ae37f86560f..b83cd1412a4c 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
@@ -1695,6 +1695,22 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf136805)
     validate(TestFilter::PDF_WRITER);
 }
 
+CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf157517)
+{
+    // Only reproduced with PPDF-A/2 / bDF-A/3b and PDF/UA.
+    uno::Sequence<beans::PropertyValue> 
aFilterData(comphelper::InitPropertySequence({
+        { "PDFUACompliance", uno::Any(true) },
+        { "SelectPdfVersion", uno::Any(static_cast<sal_Int32>(3)) },
+    }));
+    comphelper::SequenceAsHashMap aMediaDescriptor;
+    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);
+}
+
 CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf152235)
 {
     // Enable PDF/UA

Reply via email to