[ 
https://issues.apache.org/jira/browse/FOP-3306?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18084383#comment-18084383
 ] 

Alexander Dyuzhev commented on FOP-3306:
----------------------------------------

[~jgoncalves] thank you for the update.

For
{code:xml}
<fo:leader leader-pattern="rule" leader-length="100%" 
rule-style="dotted"></fo:leader>  {code}
the exception occurs:
 
{code:java}
SEVERE: Exception
org.apache.fop.apps.FOPException: java.lang.UnsupportedOperationException: 
getContentAreaIPD() called when it should have been overridden
javax.xml.transform.TransformerException: 
java.lang.UnsupportedOperationException: getContentAreaIPD() called when it 
should have been overridden
        at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:298)
        at org.apache.fop.cli.InputHandler.renderTo(InputHandler.java:117)
        at org.apache.fop.cli.Main.startFOP(Main.java:180)
        at org.apache.fop.cli.Main.startFOP(Main.java:142)
        at org.apache.fop.cli.Main.main(Main.java:211)
Caused by: javax.xml.transform.TransformerException: 
java.lang.UnsupportedOperationException: getContentAreaIPD() called when it 
should have been overridden
        at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:739)
        at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:345)
        at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:295)
        ... 4 more
Caused by: java.lang.UnsupportedOperationException: getContentAreaIPD() called 
when it should have been overridden
        at 
org.apache.fop.layoutmgr.AbstractBaseLayoutManager.getContentAreaIPD(AbstractBaseLayoutManager.java:208)
        at 
org.apache.fop.layoutmgr.AbstractBaseLayoutManager.getParentAreaIPD(AbstractBaseLayoutManager.java:149)
        at 
org.apache.fop.layoutmgr.AbstractBaseLayoutManager.getBaseLength(AbstractBaseLayoutManager.java:87)
        at 
org.apache.fop.layoutmgr.inline.LeaderLayoutManager.getBaseLength(LeaderLayoutManager.java:353)
        at 
org.apache.fop.datatypes.LengthBase.getBaseLength(LengthBase.java:128)
        at 
org.apache.fop.fo.properties.PercentLength.getNumericValue(PercentLength.java:90)
        at 
org.apache.fop.fo.properties.PercentLength.getValue(PercentLength.java:112)
        at 
org.apache.fop.fo.properties.LengthRangeProperty.checkConsistency(LengthRangeProperty.java:225)
        at 
org.apache.fop.fo.properties.LengthRangeProperty.getOptimum(LengthRangeProperty.java:292)
        at 
org.apache.fop.layoutmgr.inline.LeaderLayoutManager.getLeaderAllocIPD(LeaderLayoutManager.java:108)
        at 
org.apache.fop.layoutmgr.inline.LeaderLayoutManager.getAllocationIPD(LeaderLayoutManager.java:98)
        at 
org.apache.fop.layoutmgr.inline.LeaderLayoutManager.getNextKnuthElements(LeaderLayoutManager.java:277)
        at 
org.apache.fop.layoutmgr.inline.InlineLayoutManager.getNextKnuthElements(InlineLayoutManager.java:332)
        at 
org.apache.fop.layoutmgr.inline.LineLayoutManager.collectInlineKnuthElements(LineLayoutManager.java:711)
        at 
org.apache.fop.layoutmgr.inline.LineLayoutManager.getNextKnuthElements(LineLayoutManager.java:627)
        at 
org.apache.fop.layoutmgr.BlockLayoutManager.getNextChildElements(BlockLayoutManager.java:141)
        at 
org.apache.fop.layoutmgr.BlockStackingLayoutManager.getNextKnuthElements(BlockStackingLayoutManager.java:292)
        at 
org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(BlockLayoutManager.java:113)
        at 
org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(BlockLayoutManager.java:105)
        at 
org.apache.fop.layoutmgr.BlockLayoutManager.getNextChildElements(BlockLayoutManager.java:141)
        at 
org.apache.fop.layoutmgr.BlockStackingLayoutManager.getNextKnuthElements(BlockStackingLayoutManager.java:292)
        at 
org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(BlockLayoutManager.java:113)
        at 
org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(BlockLayoutManager.java:105)
        at 
org.apache.fop.layoutmgr.BlockLayoutManager.getNextChildElements(BlockLayoutManager.java:141)
        at 
org.apache.fop.layoutmgr.BlockStackingLayoutManager.getNextKnuthElements(BlockStackingLayoutManager.java:292)
        at 
org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(BlockLayoutManager.java:113)
        at 
org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(BlockLayoutManager.java:105)
        at 
org.apache.fop.layoutmgr.FlowLayoutManager.getNextChildElements(FlowLayoutManager.java:223)
        at 
org.apache.fop.layoutmgr.FlowLayoutManager.addChildElements(FlowLayoutManager.java:148)
        at 
org.apache.fop.layoutmgr.FlowLayoutManager.getNextKnuthElements(FlowLayoutManager.java:116)
        at 
org.apache.fop.layoutmgr.FlowLayoutManager.getNextKnuthElements(FlowLayoutManager.java:69)
        at 
org.apache.fop.layoutmgr.PageBreaker.getNextKnuthElements(PageBreaker.java:252)
        at 
org.apache.fop.layoutmgr.AbstractBreaker.getNextBlockList(AbstractBreaker.java:704)
        at 
org.apache.fop.layoutmgr.PageBreaker.getNextBlockList(PageBreaker.java:179)
        at 
org.apache.fop.layoutmgr.PageBreaker.getNextBlockList(PageBreaker.java:159)
        at 
org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:387)
        at org.apache.fop.layoutmgr.PageBreaker.doLayout(PageBreaker.java:113)
        at 
org.apache.fop.layoutmgr.PageSequenceLayoutManager.activateLayout(PageSequenceLayoutManager.java:143)
        at 
org.apache.fop.area.AreaTreeHandler.endPageSequence(AreaTreeHandler.java:267)
        at 
org.apache.fop.fo.DelegatingFOEventHandler.endPageSequence(DelegatingFOEventHandler.java:115)
        at 
org.apache.fop.accessibility.fo.FO2StructureTreeConverter.endPageSequence(FO2StructureTreeConverter.java:186)
        at 
org.apache.fop.fo.pagination.PageSequence.endOfNode(PageSequence.java:140)
        at 
org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder.java:390)
        at org.apache.fop.fo.FOTreeBuilder$3.run(FOTreeBuilder.java:207)
        at org.apache.fop.fo.FOTreeBuilder$3.run(FOTreeBuilder.java:204)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:203)
        at 
com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.endElement(ToXMLSAXHandler.java:263)
        at 
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:610)
        at 
com.sun.org.apache.xerces.internal.xinclude.XIncludeHandler.endElement(XIncludeHandler.java:1086)
        at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1784)
        at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2969)
        at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
        at 
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:113)
        at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:507)
        at 
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:867)
        at 
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:796)
        at 
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:142)
        at 
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216)
        at 
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:644)
        at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:661)
        at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:730)
        ... 6 more
---------
 {code}
 

May this occurs due the parent element:
{code:xml}
<fo:block role="TOCI" text-align-last="justify">
{code}
Without 'leader-length':
{code:xml}
<fo:leader leader-pattern="rule" rule-style="dotted"></fo:leader>  {code}
the PDF generated: [^test_2026-05-29.pdf], but the dots render too closely 
together (see 2nd Introduction in the ToC). It there a way to change the 
distance between the dots?

Updated .fo: [^test_2026-05-29.fo]  

> Multiple Artifacts for fo:leader dots in the accessible PDF
> -----------------------------------------------------------
>
>                 Key: FOP-3306
>                 URL: https://issues.apache.org/jira/browse/FOP-3306
>             Project: FOP
>          Issue Type: Improvement
>            Reporter: Alexander Dyuzhev
>            Assignee: Joao Goncalves
>            Priority: Major
>         Attachments: fop.xconf, test.fo, test.pdf, test_2026-05-29.fo, 
> test_2026-05-29.pdf
>
>
> I have a simple XSL-FO with \{{<fo:leader leader-pattern="dots"/>}}.
> In the generated PDF, each dot is individually marked as Artifact:
> {code:java}
>     EMC
>     /Link << /MCID 1 >> BDC
>       BT
>         /F1 12 Tf
>         1 0 0 -1 0 24.666 Tm
>         [ (Introduction ) -115.6667 () ] TJ
>       ET
>     EMC
>     /Artifact BMC
>       BT
>         /F1 12 Tf
>         1 0 0 -1 67.424 24.666 Tm
>         [ (.) ] TJ
>       ET
>     EMC
>     /Artifact BMC
>       BT
>         /F1 12 Tf
>         1 0 0 -1 70.76 24.666 Tm
>         [ (.) ] TJ
>       ET
>     EMC
>     /Artifact BMC
>       BT
>         /F1 12 Tf
>         1 0 0 -1 74.096 24.666 Tm
>         [ (.) ] TJ
>       ET
>     EMC
>     /Artifact BMC
>       BT
>         /F1 12 Tf
>         1 0 0 -1 77.432 24.666 Tm
>         [ (.) ] TJ
>       ET
>     EMC
>     /Artifact BMC
> ...{code}
> (I use PDFBox's PDFDebugger tool)
>  
> How to mark the entire run of dots as a single artifact?
> {code:java}
>     /Artifact BMC
>       BT
>         /F1 12 Tf
>         1 0 0 -1 410.67 24.666 Tm
>         [ (..................) ] TJ
>       ET
>     EMC{code}



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

Reply via email to