vcl/qa/cppunit/pdfexport/data/tdf154549.odt |binary vcl/qa/cppunit/pdfexport/pdfexport.cxx | 33 ++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+)
New commits: commit 8c3e219a831719ebb40dd2af8a26b0a24ad7aba1 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Mon Apr 3 16:45:30 2023 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Wed Apr 5 20:43:43 2023 +0200 tdf#154549: vcl_pdfexport: Add unittest Change-Id: Ia2865346e966cdd4b64ed588a29cc1e760d36c73 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149969 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/vcl/qa/cppunit/pdfexport/data/tdf154549.odt b/vcl/qa/cppunit/pdfexport/data/tdf154549.odt new file mode 100644 index 000000000000..09ed1324ecbb Binary files /dev/null and b/vcl/qa/cppunit/pdfexport/data/tdf154549.odt differ diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx b/vcl/qa/cppunit/pdfexport/pdfexport.cxx index beb1a1daf50c..65e1a06a4b99 100644 --- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx +++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx @@ -1216,6 +1216,39 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf115117_2a) #endif } +CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf154549) +{ +// FIXME: On Windows, the number of chars is 4 instead of 3 +#ifndef _WIN32 + aMediaDescriptor["FilterName"] <<= OUString("writer_pdf_Export"); + saveAsPDF(u"tdf154549.odt"); + + // Parse the export result with pdfium. + 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); + CPPUNIT_ASSERT(pPdfPage); + + std::unique_ptr<vcl::pdf::PDFiumTextPage> pPdfTextPage = pPdfPage->getTextPage(); + CPPUNIT_ASSERT(pPdfTextPage); + + int nChars = pPdfTextPage->countChars(); + + CPPUNIT_ASSERT_EQUAL(3, nChars); + + std::vector<sal_uInt32> aChars(nChars); + for (int i = 0; i < nChars; i++) + aChars[i] = pPdfTextPage->getUnicode(i); + OUString aActualText(aChars.data(), aChars.size()); + + // Without the fix in place, this test would have failed with + // - Expected: ִبي + // - Actual : بִي + CPPUNIT_ASSERT_EQUAL(OUString(u"\u05B4\u0628\u064A"), aActualText); +#endif +} + CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf150846) { // Without the fix in place, this test would have failed with