[ 
https://issues.apache.org/jira/browse/FOP-2959?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matthias Reischenbacher resolved FOP-2959.
------------------------------------------
    Resolution: Duplicate

> Using fo:retrieve-marker in an artifact (static content from header) breaks 
> accesibility for the next page 
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: FOP-2959
>                 URL: https://issues.apache.org/jira/browse/FOP-2959
>             Project: FOP
>          Issue Type: Bug
>          Components: renderer/pdf
>    Affects Versions: 2.5, 2.4
>            Reporter: Dan Caprioara
>            Priority: Major
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> Using a fo:retrieve-marker in a header static content, that is marked with 
> role artifact breaks the accessibility tags structure tree for the next pages.
> {code:xml}
>  <fo:static-content
>       flow-name="sc-before"
>       role="artifact">
>               <fo:block>Header <fo:retrieve-marker
>                   retrieve-boundary="document"
>                   retrieve-class-name="title"
>                   retrieve-position="first-including-carryover"/></fo:block>
>  </fo:static-content>
> {code}
> *The cause:* 
>  The class org.apache.fop.accessibility.fo.FO2StructureTreeConverter switches 
> the current FOEventHandler (converter) to one that "swallows" all events each 
> time an artifact is found, and restores the initial converter after the 
> artifact ends.But this gets into conflict with the retrieve markers. The 
> retrieve marker restore state event is processed asynchronous, just before 
> the current page is finished, and restores the FOEventHandler to the one it 
> was available when the start retrieve marker was emmited (in our case the 
> "swallower", because the retrieve marker was in an artifact). The result is 
> that the "swallower" is the current FOEventHandler for the next page.
> *The fix:*
> The fix is to restore the initial handler each time the page ends:
>  At the end of the method: 
> org.apache.fop.accessibility.fo.FO2StructureTreeConverter.endPageSequence(PageSequence)
>  add:
> {code:java}
>   if (converter == eventSwallower) {
>           converter = structureTreeEventTrigger;
>           converters.clear();
>    }        
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to