Bug 131098 - OOXML .docx Image Fill Not Imported
Summary: OOXML .docx Image Fill Not Imported
Status: NEW
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Writer (show other bugs)
Version:
(earliest affected)
3.5.0 release
Hardware: All All
: medium normal
Assignee: Not Assigned
URL:
Whiteboard:
Keywords: filter:docx
Depends on:
Blocks: OOXML-Object-Fill OOXML-Doc-Themes
  Show dependency treegraph
 
Reported: 2020-03-03 15:52 UTC by Luke
Modified: 2023-08-21 18:59 UTC (History)
5 users (show)

See Also:
Crash report or crash signature:


Attachments
OOXML docx with Both Pictures Missing Area Fill (56.53 KB, application/vnd.openxmlformats-officedocument.wordprocessingml.document)
2020-03-03 15:52 UTC, Luke
Details
MS binary .doc correctly imported (67.00 KB, application/msword)
2020-03-03 15:54 UTC, Luke
Details
Similar Line Border Correctly imported in OOXML (67.00 KB, application/msword)
2020-03-03 15:55 UTC, Luke
Details
Screenshot Comparison of Word vs Writer (92.80 KB, image/png)
2020-03-03 16:00 UTC, Luke
Details
OOXML .pptx Files correctly import Area Atrribute (75.07 KB, application/vnd.openxmlformats-officedocument.presentationml.presentation)
2020-03-03 16:06 UTC, Luke
Details
Similar Line Border effect Correctly imported in OOXML .docx (56.72 KB, application/vnd.openxmlformats-officedocument.wordprocessingml.document)
2020-03-03 22:05 UTC, Luke
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Luke 2020-03-03 15:52:15 UTC
Created attachment 158340 [details]
OOXML docx with Both Pictures Missing Area Fill

The background fill of MSO images in OOXML documents is lost on import. 

Steps to reproduce:
1. In Word insert image
2. Format Picture -> Solid Fill
3. Save
4. Open in Writer
5. Right click on Image -> Properties -> Area

Expected Results
1. The fill color from Word

Actual Results
1. No fill


Note that the .doc format correctly imports this attribute.
Comment 1 Luke 2020-03-03 15:54:37 UTC
Created attachment 158341 [details]
MS binary .doc correctly imported
Comment 2 Luke 2020-03-03 15:55:59 UTC Comment hidden (obsolete)
Comment 3 Luke 2020-03-03 16:00:52 UTC
Created attachment 158343 [details]
Screenshot Comparison of Word vs Writer
Comment 4 Luke 2020-03-03 16:06:10 UTC
Created attachment 158344 [details]
OOXML .pptx Files correctly import Area Atrribute

Oddly, this is a Writer specific OOXML issue
Comment 5 Julien Nabet 2020-03-03 21:36:25 UTC
On pc Debian x86-64 with master sources updated today, I could reproduce this.
I noticed these logs:
warn:xmloff:7570:7570:sax/source/fastparser/fastparser.cxx:1267: unknown element xsi:type http://www.w3.org/2001/XMLSchema-instance
warn:xmloff:7570:7570:sax/source/fastparser/fastparser.cxx:1267: unknown element xsi:type http://www.w3.org/2001/XMLSchema-instance
warn:oox:7570:7570:oox/source/docprop/docprophandler.cxx:321: OOXMLDocPropHandler::startFastElement: unknown element 5621
warn:oox:7570:7570:oox/source/docprop/docprophandler.cxx:321: OOXMLDocPropHandler::startFastElement: unknown element 3198
warn:oox:7570:7570:oox/source/docprop/docprophandler.cxx:321: OOXMLDocPropHandler::startFastElement: unknown element 5621
warn:oox:7570:7570:oox/source/docprop/docprophandler.cxx:321: OOXMLDocPropHandler::startFastElement: unknown element 2749
warn:oox:7570:7570:oox/source/docprop/docprophandler.cxx:321: OOXMLDocPropHandler::startFastElement: unknown element 3198
warn:xmloff:7570:7570:sax/source/fastparser/fastparser.cxx:1267: unknown element w15:val http://schemas.microsoft.com/office/word/2012/wordml
warn:xmloff:7570:7570:sax/source/fastparser/fastparser.cxx:1195: unknown attribute vid={4A3C46E8-61CC-4603-A589-7422A47A8E4A}
warn:xmloff:7570:7570:sax/source/fastparser/fastparser.cxx:1267: unknown element wp14:editId http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing
warn:oox:7570:7570:oox/source/drawingml/shapecontext.cxx:130: ShapeContext::onCreateContext: unhandled element: 3973
warn:writerfilter:7570:7570:writerfilter/source/dmapper/WrapPolygonHandler.cxx:171: WrapPolygonHandler::lcl_attribute: unhandled token: 91309
warn:xmloff:7570:7570:sax/source/fastparser/fastparser.cxx:1267: unknown element wp14:editId http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing
warn:oox:7570:7570:oox/source/drawingml/shapecontext.cxx:130: ShapeContext::onCreateContext: unhandled element: 3973
warn:writerfilter:7570:7570:writerfilter/source/dmapper/WrapPolygonHandler.cxx:171: WrapPolygonHandler::lcl_attribute: unhandled token: 91309
warn:legacy.osl:7570:7570:oox/source/helper/storagebase.cxx:67: StorageBase::StorageBase - missing base input stream
warn:sfx.view:7570:7570:sfx2/source/view/viewfrm.cxx:3210: SID_SIDEBAR state requested, but no task pane child window exists for this ID!
warn:sfx.view:7570:7570:sfx2/source/view/viewfrm.cxx:3210: SID_SIDEBAR state requested, but no task pane child window exists for this ID!

Don't know if it may be a dup.
At least, I found a similar bug on xlsx
Comment 6 Julien Nabet 2020-03-03 21:47:36 UTC Comment hidden (obsolete)
Comment 7 Luke 2020-03-03 22:05:45 UTC
Created attachment 158356 [details]
Similar Line Border effect Correctly imported in OOXML .docx

Unlike the Area Effect, the Line Effect is correctly imported in OOXML.
Comment 8 Xisco Faulí 2020-09-29 12:37:12 UTC Comment hidden (obsolete)
Comment 9 Stéphane Guillou (stragu) 2021-06-14 13:16:03 UTC
Reproduced in:

Version: 7.2.0.0.alpha1+ / LibreOffice Community
Build ID: bb54d6d8241a06a6772052b77b67d6a4f686426c
CPU threads: 8; OS: Linux 4.15; UI render: default; VCL: gtk3
Locale: en-AU (en_AU.UTF-8); UI: en-US
TinderBox: Linux-rpm_deb-x86_64@86-TDF, Branch:master, Time: 2021-06-11_20:14:38
Calc: threaded
Comment 10 Aron Budea 2022-09-30 10:22:28 UTC
Already in 3.5.0.3.
Comment 11 Justin L 2023-06-04 00:49:39 UTC
repro 7.6+
We do read case A_TOKEN(srgbClr):, but it gets lost somewhere...
I think we always assign transparent white b/c nFillColor is only -1
xGraphicObjectProperties->setPropertyValue(getPropertyName( PROP_BACK_COLOR ),
                uno::Any( GraphicImport_Impl::nFillColor ));
Comment 12 Regina Henschel 2023-06-04 17:52:24 UTC
Reading the fill from the source in oox is correct. It gets lost in writerfilter/source/dmapper/GraphicImport.cxx

If I add the following in https://opengrok.libreoffice.org/xref/core/writerfilter/source/dmapper/GraphicImport.cxx?r=3eb90b33#865
and the needed #include <com/sun/star/drawing/FillStyle.hpp> at the top,
then I get the shape fill color. But this is not a complete solution, because it does not consider FillGradient, FillTransparenceGradient, FillTransparence and not theme colors. But is shows that GraphicImport.cxx is likely the correct place to fix the error.

drawing::FillStyle eFillStyle;
aAny = xSourceGraphProps->getPropertyValue("FillStyle");
if ((aAny >>= eFillStyle) && drawing::FillStyle_SOLID == eFillStyle)
{
    util::Color aFillColor;
    aAny = xSourceGraphProps->getPropertyValue("FillColor");
    if (aAny >>= aFillColor)
    {
        xGraphProps->setPropertyValue("FillStyle", uno::Any(drawing::FillStyle_SOLID));
        xGraphProps->setPropertyValue("BackColor", aAny);
        xGraphProps->setPropertyValue("FillColor", aAny);
    }
}

Another question is, why xGraphProps do not have these properties from the beginning.