Bug 126981 - FILESAVE DOCX Embedded Visio object doesn't survive roundtrip
Summary: FILESAVE DOCX Embedded Visio object doesn't survive roundtrip
Status: NEW
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Writer (show other bugs)
(earliest affected) release
Hardware: All All
: medium normal
Assignee: Not Assigned
Keywords: filter:docx, filter:visio
Depends on:
Blocks: DOCX-OLE-Objects Visio
  Show dependency treegraph
Reported: 2019-08-16 23:01 UTC by Aron Budea
Modified: 2022-01-12 16:24 UTC (History)
4 users (show)

See Also:
Crash report or crash signature:

Sample DOCX with embedded Visio object (44.58 KB, application/vnd.openxmlformats-officedocument.wordprocessingml.document)
2019-08-16 23:01 UTC, Aron Budea
Extracted embedded vsdx Visio file (18.09 KB, application/vnd.visio2013)
2022-01-12 16:06 UTC, Bartosz
Resaved docx document with LO (35.90 KB, application/vnd.openxmlformats-officedocument.wordprocessingml.document)
2022-01-12 16:24 UTC, Bartosz

Note You need to log in before you can comment on or make changes to this bug.
Description Aron Budea 2019-08-16 23:01:38 UTC
Created attachment 153449 [details]
Sample DOCX with embedded Visio object

Attached DOCX contains a simple Visio drawing (inside the zip it's word\embeddings\Microsoft_Visio_Drawing1.vsdx). When opened in Word and clicking on the object, it clearly behaves as an embedded object (upon double-clicking it'll complain if Visio isn't installed, that's expected).

- Open and save it in Writer, then reopen in Word.

=> The object appears as a picture in Word (Picture tools ribbon shows on toolbar).
The visio file is still there, but now it's word\embeddings\oleObject1.bin.

Observed using LO (d3d13140f0036c53aa74820b41acfeffa3572168), / Windows 7.
In even the embedded file gets lost.
Comment 1 Justin L 2020-03-24 09:01:12 UTC
I think a good place to start is going to be reviewing https://cgit.freedesktop.org/libreoffice/core/commit/?id=d60398ff5b42ff77a4002dcd13b7fb8c9a73eade

+// TODO: this is probably a sub-optimal approach: ideally the media type
+// of the stream from [Content_Types].xml should be stored somewhere for this
+// purpose, but currently the media type of all OLE streams in the storage is
+// just "application/vnd.sun.star.oleobject"
Comment 2 Bartosz 2022-01-12 16:06:46 UTC
Created attachment 177495 [details]
Extracted embedded vsdx Visio file
Comment 3 Bartosz 2022-01-12 16:24:20 UTC
Created attachment 177498 [details]
Resaved docx document with LO

Confirmed with build:

Version: / LibreOffice Community
Build ID: 4032284bf9629e9cfbbbb4597d0b10394f9e61be
CPU threads: 8; OS: Mac OS X 10.16; UI render: Skia/Metal; VCL: osx
Locale: en-US (en_US.UTF-8); UI: en-US
Calc: threaded