tdf#105536: PDF image should be v-flipped unconditionally
Unit test included Change-Id: Id0d054a6b9922666daf4f36908f97ed6e65fb6c7 Reviewed-on: https://gerrit.libreoffice.org/33649 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
This commit is contained in:
BIN
sdext/source/pdfimport/test/testTdf105536.pdf
Normal file
BIN
sdext/source/pdfimport/test/testTdf105536.pdf
Normal file
Binary file not shown.
@@ -522,12 +522,27 @@ namespace
|
|||||||
CPPUNIT_ASSERT(aOutput.indexOf("svg:height=\"-262.82mm\"") != -1);
|
CPPUNIT_ASSERT(aOutput.indexOf("svg:height=\"-262.82mm\"") != -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void testTdf105536()
|
||||||
|
{
|
||||||
|
rtl::Reference<pdfi::PDFIRawAdaptor> xAdaptor(new pdfi::PDFIRawAdaptor(OUString(), getComponentContext()));
|
||||||
|
xAdaptor->setTreeVisitorFactory(createDrawTreeVisitorFactory());
|
||||||
|
|
||||||
|
OString aOutput;
|
||||||
|
CPPUNIT_ASSERT_MESSAGE("Exporting to ODF",
|
||||||
|
xAdaptor->odfConvert(m_directories.getURLFromSrc("/sdext/source/pdfimport/test/testTdf105536.pdf"),
|
||||||
|
new OutputWrapString(aOutput),
|
||||||
|
nullptr));
|
||||||
|
// This ensures that the imported image arrives properly flipped
|
||||||
|
CPPUNIT_ASSERT(aOutput.indexOf("draw:transform=\"matrix(-21488.4 0 0 -27978.1 21488.4 27978.1)\"") != -1);
|
||||||
|
}
|
||||||
|
|
||||||
CPPUNIT_TEST_SUITE(PDFITest);
|
CPPUNIT_TEST_SUITE(PDFITest);
|
||||||
CPPUNIT_TEST(testXPDFParser);
|
CPPUNIT_TEST(testXPDFParser);
|
||||||
CPPUNIT_TEST(testOdfWriterExport);
|
CPPUNIT_TEST(testOdfWriterExport);
|
||||||
CPPUNIT_TEST(testOdfDrawExport);
|
CPPUNIT_TEST(testOdfDrawExport);
|
||||||
CPPUNIT_TEST(testTdf96993);
|
CPPUNIT_TEST(testTdf96993);
|
||||||
CPPUNIT_TEST(testTdf98421);
|
CPPUNIT_TEST(testTdf98421);
|
||||||
|
CPPUNIT_TEST(testTdf105536);
|
||||||
CPPUNIT_TEST_SUITE_END();
|
CPPUNIT_TEST_SUITE_END();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -349,8 +349,12 @@ void PDFIProcessor::setupImage(ImageId nImage)
|
|||||||
pFrame->h = pImageElement->h = aScale.getY();
|
pFrame->h = pImageElement->h = aScale.getY();
|
||||||
pFrame->ZOrder = m_nNextZOrder++;
|
pFrame->ZOrder = m_nNextZOrder++;
|
||||||
|
|
||||||
if (aScale.getY() < 0)
|
// Poppler wrapper takes into account that vertical axes of PDF and ODF are opposite,
|
||||||
pFrame->MirrorVertical = pImageElement->MirrorVertical = true;
|
// and it flips matrix vertically (see poppler's GfxState::GfxState()).
|
||||||
|
// But image internal vertical axis is independent of PDF vertical axis direction,
|
||||||
|
// so arriving matrix is extra-flipped relative to image.
|
||||||
|
// We force vertical flip here to compensate that.
|
||||||
|
pFrame->MirrorVertical = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PDFIProcessor::drawMask(const uno::Sequence<beans::PropertyValue>& xBitmap,
|
void PDFIProcessor::drawMask(const uno::Sequence<beans::PropertyValue>& xBitmap,
|
||||||
|
Reference in New Issue
Block a user