vcl/qa/cppunit/pdfexport/data/tdf113143.odp |binary
vcl/qa/cppunit/pdfexport/pdfexport.cxx | 173 +---
vcl/source/gdi/pdfextoutdevdata.cxx |6
3 files changed, 114 insertions(+), 65 deletions(-)
New commits:
commit 257014ce03dee29506e8e70c204e912c4ed33172
Author: Miklos Vajna
Date: Thu May 24 17:29:13 2018 +0200
tdf#113143 PDF export: fix mis-scaled JPGs on Impress note pages
This is really similar to commit
4c2172a3e973bc6351107a3a1b554c77b40b75dd (tdf#106702 PDF export: fix
missing images from Writer headers/footers, 2018-05-22) just this one is
about the size of the output rectangle for JPG content, while the
previous problem was about the position of them.
Also extract PdfExportTest::exportAndParse() from the last two tests to
avoid duplication.
(cherry picked from commit 89dc667cebfec5315f0c0361e49d759e88458689)
Change-Id: I9812924d505e9fdaca2a95b4990e7aaa5e44fd7f
Reviewed-on: https://gerrit.libreoffice.org/54989
Tested-by: Jenkins
Reviewed-by: Christian Lohmaier
diff --git a/vcl/qa/cppunit/pdfexport/data/tdf113143.odp
b/vcl/qa/cppunit/pdfexport/data/tdf113143.odp
new file mode 100644
index ..5f8a1b10e2e5
Binary files /dev/null and b/vcl/qa/cppunit/pdfexport/data/tdf113143.odp differ
diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx
b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
index 9e6924f2e66a..da3da74fc63d 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
@@ -40,8 +40,13 @@ class PdfExportTest : public test::BootstrapFixture, public
unotest::MacrosTest
uno::Reference mxComponent;
FPDF_PAGE mpPdfPage = nullptr;
FPDF_DOCUMENT mpPdfDocument = nullptr;
+utl::TempFile maTempFile;
+SvMemoryStream maMemory;
+// Export the document as PDF, then parse it with PDFium.
+void exportAndParse(const OUString& rURL, const utl::MediaDescriptor&
rDescriptor);
public:
+PdfExportTest();
virtual void setUp() override;
virtual void tearDown() override;
void load(const OUString& rFile, vcl::filter::PDFDocument& rDocument);
@@ -77,6 +82,7 @@ public:
void testTdf109143();
void testTdf105954();
void testTdf106702();
+void testTdf113143();
CPPUNIT_TEST_SUITE(PdfExportTest);
CPPUNIT_TEST(testTdf106059);
@@ -102,9 +108,32 @@ public:
CPPUNIT_TEST(testTdf109143);
CPPUNIT_TEST(testTdf105954);
CPPUNIT_TEST(testTdf106702);
+CPPUNIT_TEST(testTdf113143);
CPPUNIT_TEST_SUITE_END();
};
+PdfExportTest::PdfExportTest()
+{
+maTempFile.EnableKillingFile();
+}
+
+void PdfExportTest::exportAndParse(const OUString& rURL, const
utl::MediaDescriptor& rDescriptor)
+{
+// Import the bugdoc and export as PDF.
+mxComponent = loadFromDesktop(rURL);
+CPPUNIT_ASSERT(mxComponent.is());
+
+uno::Reference xStorable(mxComponent, uno::UNO_QUERY);
+xStorable->storeToURL(maTempFile.GetURL(),
rDescriptor.getAsConstPropertyValueList());
+
+// Parse the export result with pdfium.
+SvFileStream aFile(maTempFile.GetURL(), StreamMode::READ);
+maMemory.WriteStream(aFile);
+mpPdfDocument
+= FPDF_LoadMemDocument(maMemory.GetData(), maMemory.GetSize(),
/*password=*/nullptr);
+CPPUNIT_ASSERT(mpPdfDocument);
+}
+
void PdfExportTest::setUp()
{
test::BootstrapFixture::setUp();
@@ -142,14 +171,12 @@ void PdfExportTest::load(const OUString& rFile,
vcl::filter::PDFDocument& rDocum
CPPUNIT_ASSERT(mxComponent.is());
uno::Reference xStorable(mxComponent, uno::UNO_QUERY);
-utl::TempFile aTempFile;
-aTempFile.EnableKillingFile();
utl::MediaDescriptor aMediaDescriptor;
aMediaDescriptor["FilterName"] <<= OUString("writer_pdf_Export");
-xStorable->storeToURL(aTempFile.GetURL(),
aMediaDescriptor.getAsConstPropertyValueList());
+xStorable->storeToURL(maTempFile.GetURL(),
aMediaDescriptor.getAsConstPropertyValueList());
// Parse the export result.
-SvFileStream aStream(aTempFile.GetURL(), StreamMode::READ);
+SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
CPPUNIT_ASSERT(rDocument.Read(aStream));
}
@@ -161,8 +188,6 @@ void PdfExportTest::testTdf106059()
CPPUNIT_ASSERT(mxComponent.is());
uno::Reference xStorable(mxComponent, uno::UNO_QUERY);
-utl::TempFile aTempFile;
-aTempFile.EnableKillingFile();
utl::MediaDescriptor aMediaDescriptor;
aMediaDescriptor["FilterName"] <<= OUString("writer_pdf_Export");
// Explicitly enable the usage of the reference XObject markup.
@@ -170,11 +195,11 @@ void PdfExportTest::testTdf106059()
{"UseReferenceXObject", uno::Any(true) }
}));
aMediaDescriptor["FilterData"] <<= aFilterData;
-xStorable->storeToURL(aTempFile.GetURL(),
aMediaDescriptor.getAsConstPropertyValueList());
+xStorable->storeToURL(maTempFile.GetURL(),
aMediaDescriptor.getAsConstPropertyValueList());