In general shapes' shadow properties are handled during export to PPTX file, but this does not work for text boxs, which are also some kind of shapes.
Steps to Reproduce:
1. Open attached ODP file containing a shape and a textbox
2. Save it to PPTX
3. Import the save PPTX to LO or MSO
Textbox's shadow is gone, while shape's shadow is there.
Textbox's shadow also should be exported.
User Profile Reset: No
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36
Created attachment 135534 [details]
OPD file containing a shape and a text box with shadow
Created attachment 135535 [details]
Exported PPTX with no shadow for textshape
Confirmed. Version: 18.104.22.168.alpha0+
Build ID: b6e32d53ce9c98bfba517c40f53d40e97a091b0e
CPU threads: 4; OS: Windows 6.1; UI render: default;
and Version: 22.214.171.124.alpha0+
Let's turn it into a easy hack. The code is here:
Check ShapeExport::WriteTextBox(...) method and also ShapeExport::WriteCustomShape(...)
Hello, I am a newbie and wish to work on this bug but when I tried this on my pc text box shadows were exporting fine.
Someone is already working on this bug (see assignee field). So please find and other easy hack work on and do not forget to assign that to yourself.
Hey Tamas , in the assignee field, it mentioned that it was assigned to you only. So can i work on this bug? I was successful in reproducing the bug and am looking forward to solve it as my first ever bug.
(In reply to Archit Jugran from comment #7)
> Hey Tamas , in the assignee field, it mentioned that it was assigned to you
> only. So can i work on this bug? I was successful in reproducing the bug
> and am looking forward to solve it as my first ever bug.
Yes, you can work on this bug.
Archit: A Polite Ping, Still working on this? or I can assign it to myself?
I think Archit is not working on this as he hasn't assign it to himself. Hence I am assigning this bug to myself.
I looked into this bug and got to know that WriteShapeEffects is responsible for shadow of custom shapea and works fine in ShapeExport::WriteCustomShape but when i try to apply this function in ShapeExport::WriteTextBox, it's not working. Is there any other information that i need to know?
And also what type of box is that orange? is that normal rectangle? actually i tried with WritePolyPolygonShape, WriteahCustomShape, WriteRectangleShape but i dob't see anything related to that textbox. Could you please help me.
I suggest to use a debugger tool to better understand the code:
Also use MS Office to check the export result, it might add some invalidation error, which means that the generated file is invalid. Also you can check what WriteShapeEffects do. Maybe textbox is exported differently as the other shape next to it. It's also a good idea to check the xml files inside PPTX, what it looks like after LO export and after MSO export.
I tried to play with the code and just out of my curiosity i commented "pFS->endElementNS( mnXmlNamespace, (GetDocumentType() != DOCUMENT_DOCX ? XML_sp : XML_wsp) );" this xml tag at line 1023 under ShapeExport::WriteCustomShape, and i got the required shadow property but:
didn't get the second right box in export.
I do know that after starting one should obviously close the tag, but could you please tell me what could be the possible cause of this weird behaviour.
(In reply to Ekansh Jha from comment #14)
> Hi Tamas,
> I tried to play with the code and just out of my curiosity i commented
> "pFS->endElementNS( mnXmlNamespace, (GetDocumentType() != DOCUMENT_DOCX ?
> XML_sp : XML_wsp) );" this xml tag at line 1023 under
> ShapeExport::WriteCustomShape, and i got the required shadow property but:
> didn't get the second right box in export.
> I do know that after starting one should obviously close the tag, but could
> you please tell me what could be the possible cause of this weird behaviour.
I have no idea about the details. A corrupted file can lead to weird behavior.
I tried to look into it and found that in ShapeExport::WriteTextBox() first loop doesn't work, After implementing WriteShapeEffects( rXPropSet ) to that loop, i think it will work. I tried but failed, Could you please suggest anything that can help.
(In reply to Ekansh Jha from comment #16)
> I tried to look into it and found that in ShapeExport::WriteTextBox() first
> loop doesn't work, After implementing WriteShapeEffects( rXPropSet ) to that
> loop, i think it will work. I tried but failed, Could you please suggest
> anything that can help.
As I already suggested, it's the best to find out what MSO export shadow properties into a PPTX file. For this you can save the attached ODP to a PPTX (in LO), open it in MSO, set some shadow and then save again. You can find the important part in slide1.xml and you can check how shadow is implemented in this file format.
Also you can monitor how LO export works by reading the XML file. In the code you can find contstans with XML_ prefix (e.g. XML_txBody, XML_txbx), those are the xml tags (without the prefix, e.g. txBody, txbx) which you can search in the output.
A polite ping, still working on this bug?
Tamás Zolnai committed a patch related to this issue.
It has been pushed to "master":
tdf#111789: TextBox shadow propeties are not saved to PPTX
It will be available in 6.1.0.
The patch should be included in the daily builds available at
http://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
Affected users are encouraged to test the fix and report feedback.