Hi, height applies to fo:table-row, and FOP is compliant with that, but...
as said in FO-REC 1.1, §3.7.9 (see [1]): "The fo:table-row formatting object does not generate any areas. The fo:table-row formatting object returns the sequence of areas created by concatenating the sequences of areas returned by each of the children of the fo:table-row". IMHO: According to that, while there is a fo:table-cell [child of the fo:table-row] that has the wished height, then the behavior conforms to spec. Other FOP guy can confirm? That can make some unexpected behavior like this you described. Expected behavior should be: a rows-spanned cell should have the height equal to the sum of spanned rows heights. [1] http://www.w3.org/TR/xsl/#fo_table-row -- Pascal Le 18/09/2010 02:44, Alexey Neyman a écrit : > Hi Pascal, > > So, is "height" property supported on fo:table-row by FOP? > > FOP compliance page says "yes" (not "partial") on "height" support, and XSL-FO > specification says this property is applicable to fo:table-row. Yet, I cannot > get it to work. Am I doing something wrong? > > Regards, > Alexey. > > On Wednesday, September 15, 2010 10:08:29 am Alexey Neyman wrote: >> Hi Pascal, >> >> Just tried. While there is no exception, <fo:table-row min-height="1em"> >> still does not work in FOP 1.0 (still no effect whatsoever). See quoted >> email as to why <fo:table-cell height="..."> is not sufficient to solve >> this issue. >> >> Regards, >> Alexey. >> >> On Wednesday, September 15, 2010 12:35:00 am Pascal Sancho wrote: >>> Hi Alexey >>> >>> this Exception issue seems to be fixed in FOP 1.0 (I've noticed in the >>> pdf attached to your initial post that you used FOP 0.95). >>> I suggest you to upgrade, at least min-height will work as expected >>> without any Exception. >>> >>> Pascal >>> >>> Le 14/09/2010 22:10, Alexey Neyman a écrit : >>>> Hi Pascal, >>>> >>>> I see your point, although this advice is not particularly useful to >>>> what I am doing. As I mentioned, this table is generated by DocBook, >>>> and its templates for tables are probably the most convoluted in the >>>> whole stylesheet. I was trying to avoid heavy customizations of these >>>> templates. >>>> >>>> Another issue is that what I really want is "min-height" property in >>>> this case: at XSLT stage, it is not known whether text inside the >>>> table cell will occupy 1, 2, 3 or 15 rows. I tried using min-height in >>>> the test case I posted before, but this causes an exception in FOP >>>> (see below). According to spec, using min-height is perfectly legal: >>>> it should set minimum height, while retaining optimum and maximum >>>> height as "auto". >>>> >>>> An finally, what you suggested won't work if another cell is more than >>>> 1 row. With the example I posted: >>>> >>>> AB >>>> AC >>>> DC >>>> >>>> If I set height to 2em, it looks okay. But, if cell B contains a text >>>> that wraps into 2nd line, the table again looks as >>>> >>>> AB >>>> DC >>>> >>>> but now the whole row containing C and D cells is 2em in height. Given >>>> that DocBook stylesheet does not know how many lines of text there will >>>> be in each cell - that is determined by FO processor - I cannot >>>> calculate the height value beforehand. >>>> >>>> So, I tried to set height/min-height on a fo:table-row instead. Setting >>>> min-height= on fo:table-row results in a different exception (also, see >>>> below). Setting height= on fo:table-row does not have any effect at >>>> all. According to XSL-FO spec, block-progression-dimension property >>>> (that is set through height property) is allowed on fo:table-row. Is >>>> this a FOP bug/missing feature? >>>> >>>> Regards, >>>> Alexey. >>>> >>>> Exception with min-height= on fo:table-cell: >>>> ---->8----->8----->8----->8----->8----->8----->8 >>>> Sep 14, 2010 12:37:47 PM org.apache.fop.cli.Main startFOP >>>> SEVERE: Exception >>>> java.lang.NullPointerException >>>> >>>> at >>>> org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:2 >>>> 1 7) at >>>> org.apache.fop.cli.InputHandler.renderTo(InputHandler.java:125) >>>> at org.apache.fop.cli.Main.startFOP(Main.java:166) >>>> at org.apache.fop.cli.Main.main(Main.java:197) >>>> >>>> Caused by: java.lang.NullPointerException >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.table.RowGroupLayoutManager.computeRowHeights( >>>> Ro wGroupLayoutManager.java:165) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.table.RowGroupLayoutManager.createElementsForR >>>> ow Group(RowGroupLayoutManager.java:127) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.table.RowGroupLayoutManager.getNextKnuthElemen >>>> ts (RowGroupLayoutManager.java:60) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.table.TableContentLayoutManager.getKnuthElemen >>>> ts ForRowIterator(TableContentLayoutManager.java:220) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.table.TableContentLayoutManager.getNextKnuthEl >>>> em ents(TableContentLayoutManager.java:172) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.table.TableLayoutManager.getNextKnuthElements( >>>> Ta bleLayoutManager.java:247) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.BlockStackingLayoutManager.getNextKnuthElement >>>> s( BlockStackingLayoutManager.java:294) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(BlockL >>>> ay outManager.java:116) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.FlowLayoutManager.getNextKnuthElements(FlowLay >>>> ou tManager.java:107) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.PageBreaker.getNextKnuthElements(PageBreaker.j >>>> av a:145) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.AbstractBreaker.getNextBlockList(AbstractBreak >>>> er .java:552) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.PageBreaker.getNextBlockList(PageBreaker.java: >>>> 13 7) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java: >>>> 30 2) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java: >>>> 26 4) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.PageSequenceLayoutManager.activateLayout(PageS >>>> eq uenceLayoutManager.java:106) >>>> >>>> at >>>> >>>> org.apache.fop.area.AreaTreeHandler.endPageSequence(AreaTreeHandler.jav >>>> a: 234) >>>> >>>> at >>>> >>>> org.apache.fop.fo.pagination.PageSequence.endOfNode(PageSequence.java:1 >>>> 23 ) >>>> >>>> at >>>> >>>> org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder. >>>> ja va:340) >>>> >>>> at >>>> org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:1 >>>> 6 9) at >>>> >>>> org.apache.xalan.transformer.TransformerIdentityImpl.endElement(Transfo >>>> rm erIdentityImpl.java:1102) >>>> >>>> at >>>> org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown >>>> >>>> Source) >>>> >>>> at >>>> org.apache.xerces.xinclude.XIncludeHandler.endElement(Unknown >>>> >>>> Source) >>>> >>>> at >>>> >>>> org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown >>>> Source) >>>> >>>> at >>>> >>>> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDi >>>> sp atcher.dispatch(Unknown Source) >>>> >>>> at >>>> >>>> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unkn >>>> ow n Source) >>>> >>>> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown >>>> Source) at >>>> org.apache.xerces.parsers.XML11Configuration.parse(Unknown >>>> Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown >>>> Source) at >>>> org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown >>>> Source) at >>>> org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknow >>>> n >>>> >>>> Source) >>>> >>>> at >>>> >>>> org.apache.xalan.transformer.TransformerIdentityImpl.transform(Transfor >>>> me rIdentityImpl.java:485) >>>> >>>> at >>>> org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:2 >>>> 1 4) ... 3 more >>>> >>>> ---->8----->8----->8----->8----->8----->8----->8 >>>> >>>> >>>> Exception with min-height= on fo:table-row: >>>> ---->8----->8----->8----->8----->8----->8----->8 >>>> Sep 14, 2010 12:53:10 PM org.apache.fop.cli.Main startFOP >>>> SEVERE: Exception >>>> java.lang.NullPointerException >>>> >>>> at >>>> org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:2 >>>> 1 7) at >>>> org.apache.fop.cli.InputHandler.renderTo(InputHandler.java:125) >>>> at org.apache.fop.cli.Main.startFOP(Main.java:166) >>>> at org.apache.fop.cli.Main.main(Main.java:197) >>>> >>>> Caused by: java.lang.NullPointerException >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.MinOptMaxUtil.toMinOptMax(MinOptMaxUtil.java:1 >>>> 06 ) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.table.RowGroupLayoutManager.computeRowHeights( >>>> Ro wGroupLayoutManager.java:155) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.table.RowGroupLayoutManager.createElementsForR >>>> ow Group(RowGroupLayoutManager.java:127) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.table.RowGroupLayoutManager.getNextKnuthElemen >>>> ts (RowGroupLayoutManager.java:60) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.table.TableContentLayoutManager.getKnuthElemen >>>> ts ForRowIterator(TableContentLayoutManager.java:220) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.table.TableContentLayoutManager.getNextKnuthEl >>>> em ents(TableContentLayoutManager.java:172) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.table.TableLayoutManager.getNextKnuthElements( >>>> Ta bleLayoutManager.java:247) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.BlockStackingLayoutManager.getNextKnuthElement >>>> s( BlockStackingLayoutManager.java:294) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(BlockL >>>> ay outManager.java:116) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.FlowLayoutManager.getNextKnuthElements(FlowLay >>>> ou tManager.java:107) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.PageBreaker.getNextKnuthElements(PageBreaker.j >>>> av a:145) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.AbstractBreaker.getNextBlockList(AbstractBreak >>>> er .java:552) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.PageBreaker.getNextBlockList(PageBreaker.java: >>>> 13 7) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java: >>>> 30 2) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java: >>>> 26 4) >>>> >>>> at >>>> >>>> org.apache.fop.layoutmgr.PageSequenceLayoutManager.activateLayout(PageS >>>> eq uenceLayoutManager.java:106) >>>> >>>> at >>>> >>>> org.apache.fop.area.AreaTreeHandler.endPageSequence(AreaTreeHandler.jav >>>> a: 234) >>>> >>>> at >>>> >>>> org.apache.fop.fo.pagination.PageSequence.endOfNode(PageSequence.java:1 >>>> 23 ) >>>> >>>> at >>>> >>>> org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder. >>>> ja va:340) >>>> >>>> at >>>> org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:1 >>>> 6 9) at >>>> >>>> org.apache.xalan.transformer.TransformerIdentityImpl.endElement(Transfo >>>> rm erIdentityImpl.java:1102) >>>> >>>> at >>>> org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown >>>> >>>> Source) >>>> >>>> at >>>> org.apache.xerces.xinclude.XIncludeHandler.endElement(Unknown >>>> >>>> Source) >>>> >>>> at >>>> >>>> org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown >>>> Source) >>>> >>>> at >>>> >>>> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDi >>>> sp atcher.dispatch(Unknown Source) >>>> >>>> at >>>> >>>> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unkn >>>> ow n Source) >>>> >>>> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown >>>> Source) at >>>> org.apache.xerces.parsers.XML11Configuration.parse(Unknown >>>> Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown >>>> Source) at >>>> org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown >>>> Source) at >>>> org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknow >>>> n >>>> >>>> Source) >>>> >>>> at >>>> >>>> org.apache.xalan.transformer.TransformerIdentityImpl.transform(Transfor >>>> me rIdentityImpl.java:485) >>>> >>>> at >>>> org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:2 >>>> 1 4) ... 3 more >>>> >>>> ---->8----->8----->8----->8----->8----->8----->8 >>>> >>>> On Tuesday, September 14, 2010 01:04:02 am Pascal Sancho wrote: >>>>> Hi, >>>>> >>>>> I think the behaviour is correct here: >>>>> Cells height is not sufficient to see the effect you want. >>>>> try to increase the height of vertically spanned cells (by setting the >>>>> height property to 2em) and you will see what I mean. >>>>> >>>>> Pascal >>>>> >>>>> Le 13/09/2010 22:39, Alexey Neyman a écrit : >>>>>> <fo:table table-layout="fixed" width="100%" >>>>>> >>>>>> border-top="solid black 0.5pt" border-left="solid black 0.5pt"> >>>>>> >>>>>> <fo:table-body> >>>>>> >>>>>> <fo:table-row> >>>>>> >>>>>> <fo:table-cell border-bottom="solid black 0.5pt" >>>>>> >>>>>> border-right="solid black 0.5pt" >>>>>> number-rows-spanned="2" >>>>>> number-columns-spanned="2"> >>>>>> >>>>>> <fo:block>A</fo:block> >>>>>> >>>>>> </fo:table-cell> >>>>>> <fo:table-cell border-bottom="solid black 0.5pt" >>>>>> >>>>>> border-right="solid black 0.5pt"> >>>>>> >>>>>> <fo:block>B</fo:block> >>>>>> >>>>>> </fo:table-cell> >>>>>> >>>>>> </fo:table-row> >>>>>> <fo:table-row> >>>>>> >>>>>> <fo:table-cell border-bottom="solid black 0.5pt" >>>>>> >>>>>> border-right="solid black 0.5pt" number-rows-spanned="2"> >>>>>> >>>>>> <fo:block>C</fo:block> >>>>>> >>>>>> </fo:table-cell> >>>>>> >>>>>> </fo:table-row> >>>>>> <fo:table-row> >>>>>> >>>>>> <fo:table-cell border-bottom="solid black 0.5pt" >>>>>> >>>>>> border-right="solid black 0.5pt"> >>>>>> >>>>>> <fo:block>D</fo:block> >>>>>> >>>>>> </fo:table-cell> >>>>>> <fo:table-cell border-bottom="solid black 0.5pt" >>>>>> >>>>>> border-right="solid black 0.5pt"> >>>>>> >>>>>> <fo:block>E</fo:block> >>>>>> >>>>>> </fo:table-cell> >>>>>> >>>>>> </fo:table-row> >>>>>> >>>>>> </fo:table-body> >>>>>> >>>>>> </fo:table> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [email protected] >>> For additional commands, e-mail: [email protected] >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] > . > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
