vcl/qa/cppunit/pdfexport/data/tdf138792.odt |binary vcl/qa/cppunit/pdfexport/pdfexport2.cxx | 48 ++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+)
New commits: commit 7f8f3a0152cfb5b45916a6ac43ddeab5a5e435e1 Author: Xisco Fauli <[email protected]> AuthorDate: Thu Feb 26 09:58:15 2026 +0100 Commit: Xisco Fauli <[email protected]> CommitDate: Thu Feb 26 15:47:03 2026 +0100 tdf#138792: vcl_pdfexport2: Add test Change-Id: Ib72700b7eb62ab38ed86600f4c0ea0a9050d44e2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200401 Reviewed-by: Xisco Fauli <[email protected]> Tested-by: Jenkins diff --git a/vcl/qa/cppunit/pdfexport/data/tdf138792.odt b/vcl/qa/cppunit/pdfexport/data/tdf138792.odt new file mode 100644 index 000000000000..12f6d00b38f8 Binary files /dev/null and b/vcl/qa/cppunit/pdfexport/data/tdf138792.odt differ diff --git a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx index 5b289c6032ca..a41bd2f5e5b3 100644 --- a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx +++ b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx @@ -1500,6 +1500,54 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testPdfUaMetadata) assertXPathContent(pXmlDoc, "/x:xmpmeta/rdf:RDF/rdf:Description[1]/pdfuaid:part", u"1"); } +CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf138792) +{ + // 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; + loadFromFile(u"tdf138792.odt"); + skipValidation(); + 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); + auto* pCatalogDictionary = pCatalog->GetDictionary(); + CPPUNIT_ASSERT(pCatalogDictionary); + auto* pMetadataObject = pCatalogDictionary->LookupObject("Metadata"_ostr); + CPPUNIT_ASSERT(pMetadataObject); + auto* pMetadataDictionary = pMetadataObject->GetDictionary(); + auto* pType = dynamic_cast<vcl::filter::PDFNameElement*>( + pMetadataDictionary->LookupElement("Type"_ostr)); + CPPUNIT_ASSERT(pType); + CPPUNIT_ASSERT_EQUAL("Metadata"_ostr, pType->GetValue()); + + auto* pStreamObject = pMetadataObject->GetStream(); + CPPUNIT_ASSERT(pStreamObject); + auto& rStream = pStreamObject->GetMemory(); + rStream.Seek(0); + xmlDocUniquePtr pXmlDoc = parseXmlStream(&rStream); + CPPUNIT_ASSERT(pXmlDoc); + + assertXPath(pXmlDoc, "/x:xmpmeta/rdf:RDF/rdf:Description[1]/dc:date/rdf:Seq/rdf:li"); + assertXPathContent(pXmlDoc, "/x:xmpmeta/rdf:RDF/rdf:Description[1]/dc:format", + u"application/pdf"); + assertXPathContent(pXmlDoc, "/x:xmpmeta/rdf:RDF/rdf:Description[1]/dc:title/rdf:Alt/rdf:li", + u"Test document title"); + assertXPathContent(pXmlDoc, "/x:xmpmeta/rdf:RDF/rdf:Description[1]/dc:creator/rdf:Seq/rdf:li", + u"Gabor Kelemen LO"); + assertXPathContent(pXmlDoc, + "/x:xmpmeta/rdf:RDF/rdf:Description[1]/dc:description/rdf:Alt/rdf:li", + u"Test subject"); +} + CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf153472) { // Use PDF/A-1b
