OpenXML Filter: XLSX: the string items in the shared strings part contain unexpected properties

Issue #1314 resolved
Denis Konovalyenko created an issue

The mentioned case can occur when the target language is an RTL one. For instance,

Input:

<si><r><rPr><b/><sz val="11"/><color theme="1"/><rFont val="Calibri"/><family val="2"/><charset val="204"/><scheme val="minor"/></rPr><t>Fo
rmatted</t></r><r><rPr><sz val="11"/><color theme="1"/><rFont val="Calibri"/><family val="2"/><charset val="204"/><sch
eme val="minor"/></rPr><t xml:space="preserve"> text</t></r></si>
<si><t>Text</t></si>

Output:

<si><pPr><bidi/></pPr><r><rPr><b/><sz val="11"/><color theme="1"/><rFont val="Calibri"/><family val="2"/><charset val="204"/><s
cheme val="minor"/><rtl/></rPr><t>Formatted</t></r><r><rPr><sz val="11"/><color theme="1"/><rFont val="Calibri"/><fami
ly val="2"/><charset val="204"/><scheme val="minor"/><rtl/></rPr><t xml:space="preserve"> text</t></r></si>
<si><t>Text</t></si>

So, the <pPr><bidi/></pPr> and <rPr>...<rtl/></rPr> mustn’t be present.

Moreover, the following exception may be thrown when the markup clarification takes place:

java.lang.IllegalStateException: The operation is not supported
    at net.sf.okapi.filters.openxml.BlockProperty.value(BlockProperty.java:222)
    at net.sf.okapi.filters.openxml.ElementsClarification$ParagraphBlockPropertyDefault.lambda$performFor$1(ElementsClarification.java:122)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
    at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1632)
    at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
    at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543)
    at net.sf.okapi.filters.openxml.ElementsClarification$ParagraphBlockPropertyDefault.performFor(ElementsClarification.java:127)
    at net.sf.okapi.filters.openxml.MarkupComponentClarification$Default.performFor(MarkupComponentClarification.java:91)
    at net.sf.okapi.filters.openxml.BlockPropertiesClarification$Default.performWith(BlockPropertiesClarification.java:72)
    at net.sf.okapi.filters.openxml.BlockPropertiesClarification$Paragraph.performWith(BlockPropertiesClarification.java:108)
    at net.sf.okapi.filters.openxml.MarkupClarification.performFor(MarkupClarification.java:116)
    at net.sf.okapi.filters.openxml.StyledTextSkeletonWriter.processTextUnit(StyledTextSkeletonWriter.java:181)
    at net.sf.okapi.common.filterwriter.GenericFilterWriter.processTextUnit(GenericFilterWriter.java:254)
    at net.sf.okapi.common.filterwriter.GenericFilterWriter.handleEvent(GenericFilterWriter.java:192)
    at net.sf.okapi.filters.openxml.OpenXMLFilterWriter.handleEvent(OpenXMLFilterWriter.java:284)

For more details please refer to the attached document.

Comments (1)

  1. Log in to comment