From 55641f5572f3168c09e096eb89ca563652889758 Mon Sep 17 00:00:00 2001 From: Jacobo Aragunde Pérez Date: Thu, 12 Oct 2017 13:30:47 +0200 Subject: tdf#112633 oox: Save backup images to proper path in document MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Artistic effects on bitmap images in OOXML files create a backup file with the original image. These were not being saved into the proper path for PPTX files because the `/word` directory was hardcoded in the export code. The path saved to the relations file was incorrect too because it was not taking into account that the relations file is saved to a subdir in PPTX and XLSX documents. Finally, added a unit test. Change-Id: I3e880ce763dc10dbc86ccf0e00871be5d36f6d88 Reviewed-on: https://gerrit.libreoffice.org/43338 Tested-by: Jenkins Reviewed-by: Tamás Zolnai --- oox/source/export/drawingml.cxx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'oox') diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 5beb7212ce0b..4c5c1755cdaa 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -3575,16 +3575,22 @@ OString DrawingML::WriteWdpPicture( const OUString& rFileId, const Sequence< sal return OUStringToOString( aCachedItem->second, RTL_TEXTENCODING_UTF8 ); OUString sFileName = "media/hdphoto" + OUString::number( mnWdpImageCounter++ ) + ".wdp"; - uno::Reference< io::XOutputStream > xOutStream = - mpFB->openFragmentStream( "word/" + sFileName, - "image/vnd.ms-photo" ); + Reference< XOutputStream > xOutStream = mpFB->openFragmentStream( OUStringBuffer() + .appendAscii( GetComponentDir() ) + .append( "/" ) + .append( sFileName ) + .makeStringAndClear(), + "image/vnd.ms-photo" ); OUString sId; xOutStream->writeBytes( rPictureData ); xOutStream->closeOutput(); sId = mpFB->addRelation( mpFS->getOutputStream(), oox::getRelationship(Relationship::HDPHOTO), - sFileName ); + OUStringBuffer() + .appendAscii( GetRelationCompPrefix() ) + .append( sFileName ) + .makeStringAndClear() ); maWdpCache[rFileId] = sId; return OUStringToOString( sId, RTL_TEXTENCODING_UTF8 ); -- cgit