vcl/qa/cppunit/pdfexport/data/softhyphen_pdf.odt |binary vcl/qa/cppunit/pdfexport/pdfexport.cxx | 61 +++++++++++++++++++++++ vcl/unx/generic/printer/printerinfomanager.cxx | 3 + 3 files changed, 64 insertions(+)
New commits: commit 897c6db9c88b9c60bec9be04026f0a0798f2207e Author: Michael Stahl <michael.st...@cib.de> AuthorDate: Wed Jan 23 16:25:09 2019 +0100 Commit: Thorsten Behrens <thorsten.behr...@cib.de> CommitDate: Sat Jan 26 11:44:24 2019 +0100 tdf#96892 vcl: add unit test for misplaced soft-hyphen ... ... due to incorrectly exported font size. Change-Id: If06dccc000530427be767fc7a5031f5ebe6fd431 Reviewed-on: https://gerrit.libreoffice.org/66803 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> (cherry picked from commit fddd956c0cf3b2c22a152bbb30554def1336b466) Reviewed-on: https://gerrit.libreoffice.org/66853 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/vcl/qa/cppunit/pdfexport/data/softhyphen_pdf.odt b/vcl/qa/cppunit/pdfexport/data/softhyphen_pdf.odt new file mode 100644 index 000000000000..ecd779537788 Binary files /dev/null and b/vcl/qa/cppunit/pdfexport/data/softhyphen_pdf.odt differ diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx b/vcl/qa/cppunit/pdfexport/pdfexport.cxx index 04b7309b5cd4..325b07ae8aa5 100644 --- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx +++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx @@ -88,6 +88,7 @@ public: void testForcePoint71(); void testTdf106972(); void testTdf106972Pdf17(); + void testSofthyphenPos(); void testTdf107013(); void testTdf107018(); void testTdf107089(); @@ -128,6 +129,7 @@ public: CPPUNIT_TEST(testForcePoint71); CPPUNIT_TEST(testTdf106972); CPPUNIT_TEST(testTdf106972Pdf17); + CPPUNIT_TEST(testSofthyphenPos); CPPUNIT_TEST(testTdf107013); CPPUNIT_TEST(testTdf107018); CPPUNIT_TEST(testTdf107089); @@ -599,6 +601,65 @@ void PdfExportTest::testTdf106972Pdf17() CPPUNIT_ASSERT(pXObject->Lookup("Resources")); } +void PdfExportTest::testSofthyphenPos() +{ + // No need to run it on Windows, since it would use GDI printing, and not + // trigger PDF export which is the intent of the test. + // FIXME: Why does this fail on macOS? +#if !defined MACOSX && !defined _WIN32 + // Import the bugdoc and print to PDF. + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "softhyphen_pdf.odt"; + mxComponent = loadFromDesktop(aURL); + CPPUNIT_ASSERT(mxComponent.is()); + + uno::Reference<frame::XStorable> xStorable(mxComponent, uno::UNO_QUERY); + uno::Reference<view::XPrintable> xPrintable(mxComponent, uno::UNO_QUERY); + CPPUNIT_ASSERT(xPrintable.is()); + uno::Sequence<beans::PropertyValue> aOptions(comphelper::InitPropertySequence( + { + {"FileName", uno::makeAny(maTempFile.GetURL())}, + {"Wait", uno::makeAny(true)} + })); + xPrintable->print(aOptions); + + // Parse the export result with pdfium. + SvFileStream aFile(maTempFile.GetURL(), StreamMode::READ); + SvMemoryStream aMemory; + aMemory.WriteStream(aFile); + if (aFile.bad()) + { + // Printing to PDF failed in a non-interesting way, e.g. CUPS is not + // running, there is no printer defined, etc. + return; + } + DocumentHolder pPdfDocument(FPDF_LoadMemDocument(aMemory.GetData(), aMemory.GetSize(), /*password=*/nullptr)); + CPPUNIT_ASSERT(pPdfDocument); + + // The document has one page. + CPPUNIT_ASSERT_EQUAL(1, FPDF_GetPageCount(pPdfDocument.get())); + PageHolder pPdfPage(FPDF_LoadPage(pPdfDocument.get(), /*page_index=*/0)); + CPPUNIT_ASSERT(pPdfPage.get()); + + // tdf#96892 incorrect fractional part of font size caused soft-hyphen to + // be positioned inside preceding text (incorrect = 11.1, correct = 11.05) + + // there are 3 texts currently, for line 1, soft-hyphen, line 2 + bool haveText(false); + + int nPageObjectCount = FPDFPage_CountObjects(pPdfPage.get()); + for (int i = 0; i < nPageObjectCount; ++i) + { + FPDF_PAGEOBJECT pPdfPageObject = FPDFPage_GetObject(pPdfPage.get(), i); + CPPUNIT_ASSERT_EQUAL(FPDF_PAGEOBJ_TEXT, FPDFPageObj_GetType(pPdfPageObject)); + haveText = true; + double const size(FPDFTextObj_GetFontSize(pPdfPageObject)); + CPPUNIT_ASSERT_DOUBLES_EQUAL(11.05, size, 1E-06); + } + + CPPUNIT_ASSERT(haveText); +#endif +} + void PdfExportTest::testTdf107013() { vcl::filter::PDFDocument aDocument; commit 15bc758d0eff24610867e2905236c4241305e2ed Author: Michael Stahl <michael.st...@cib.de> AuthorDate: Wed Jan 23 16:23:18 2019 +0100 Commit: Thorsten Behrens <thorsten.behr...@cib.de> CommitDate: Sat Jan 26 11:44:14 2019 +0100 vcl: unx: apply configuration to "Generic Printer" so it's PDF ... ... by default, instead of leaving it with m_nPSLevel == 0 && m_nPDFDevice == 0. Change-Id: I44059ac39791442602cbc48582670d98edc578ee Reviewed-on: https://gerrit.libreoffice.org/66802 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> (cherry picked from commit c8dd1c22d7512d4922461350c6cb804cd0864e0b) Reviewed-on: https://gerrit.libreoffice.org/66850 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/vcl/unx/generic/printer/printerinfomanager.cxx b/vcl/unx/generic/printer/printerinfomanager.cxx index 9c1007cdcd09..087289d2b301 100644 --- a/vcl/unx/generic/printer/printerinfomanager.cxx +++ b/vcl/unx/generic/printer/printerinfomanager.cxx @@ -460,6 +460,9 @@ void PrinterInfoManager::initialize() setDefaultPaper( aPrinter.m_aInfo.m_aContext ); + // if it's a "Generic Printer", apply defaults from config... + aPrinter.m_aInfo.resolveDefaultBackend(); + // finally insert printer FileBase::getFileURLFromSystemPath( aFile.PathToFileName(), aPrinter.m_aFile ); aPrinter.m_aGroup = aConfig.GetGroupName( nGroup ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits