2016-01-20 2 views
0

Я получаю сообщения об ошибках, пытаясь вынести файл в формате PDF с помощью XML:Apache FOP: ValidationException: Колонка номер или количество ячеек в строке перетекает количество фо: таблицы-столбцы, указанные для таблицы

Exception at /url/ 
('Unable to generate PDF.', b'Exception\norg.apache.fop.apps.FOPException: org.apache.fop.fo.ValidationException: 
The column-number or number of cells in the row overflows the number of fo:table-columns specified for the table. 
(See position 31:15)\njavax.xml.transform.TransformerException: org.apache.fop.fo.ValidationException: 
The column-number or number of cells in the row overflows the number of fo:table-columns specified for the table. (See position 31:15)\n\n') 

Единственное, что я меняю, это <column name="Record date&#10;Ex-dividend date&#10;Payable Date" size="4.2cm"></column>. Это соответствует формату, в котором был сделан pdf в Perl, и удаление этой строки столбца исправляет PDF-файл, и оно работает.

{% block pages %} 
<schedule_page> 
    <columns> 
     <column name="Record date&#10;Ex-dividend date&#10;Payable Date" size="4.2cm"></column> 
     {% for date_set in dist_dates %} 
     <column name="{{ date_set.record_date|date:'j-M' }}&#10;{{ date_set.ex_date|date:'j-M' }}&#10;{{ date_set.pay_date|date:'j-M' }}" size="1.675cm" margin="0.1cm"></column> 
     {% endfor %} 
    </columns> 
    <data> 
     {% regroup portfolios by group as portfolio_groups %} 
     {% for portfolio_group in portfolio_groups %} 
     <group name="{{ portfolio_group.grouper }}"> 
      {% for portfolio in portfolio_group.list %} 
      <fund name="{{ portfolio.name }}"> 
       {% for dist in portfolio.distributions %} 
        <cell value="{{ dist.value }}" {% if dist.value %}margin="0.1cm"{% endif %} ></cell> 
       {% endfor %} 
      </fund> 
      {% endfor %} 
     </group> 
     {% endfor %} 
    </data> 
</schedule_page> 
{% endblock %} 

Ф.О. файл, который предшествует PDF выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
<fo:layout-master-set> 
<fo:simple-page-master master-name="letter-landscape" page-height="21.59cm" page-width="27.94cm" margin-top="1.0cm" margin-bottom="0.5cm" margin-left="0.97cm" margin-right="0.97cm"> 
<fo:region-body margin-top="3.5cm" margin-bottom="1.0cm"/> 
<fo:region-before extent="4.0cm"/> 
<fo:region-after extent="1.0cm"/> 
</fo:simple-page-master> 
<fo:page-sequence-master master-name="DistributionPage"> 
<fo:repeatable-page-master-reference master-reference="letter-landscape"/> 
</fo:page-sequence-master> 
</fo:layout-master-set> 
<fo:page-sequence master-reference="DistributionPage"> 
<fo:static-content flow-name="xsl-region-before"> 
<fo:table font-size="8pt" font-family="TradeGothicCondensed" border-collapse="separate" table-layout="fixed"> 
<fo:table-body> 
<fo:table-row> 
<fo:table-cell margin-bottom="8pt" number-columns-spanned="0"> 
<fo:block font-weight="bold" font-size="24pt" font-family="TradeGothicCondensed" text-align="left">Distributions</fo:block> 
</fo:table-cell> 
<fo:table-cell margin-bottom="8pt" vertical-align="top" text-align="right" number-columns-spanned="0"> 
<fo:block space-after="8pt" margin-bottom="8pt" vertical-align="top"> 
<fo:external-graphic content-width="1.5in" src="url(static/logo.jpg)"/> 
</fo:block> 
</fo:table-cell> 
</fo:table-row> 
<fo:table-row> 
<fo:table-cell> 
<fo:block/> 
</fo:table-cell> 
<fo:table-cell padding-bottom="4pt" margin-bottom="4pt" padding-left="4pt" number-columns-spanned="0"> 
<fo:block padding-bottom="4pt" margin-bottom="4pt" margin-left="4pt" padding-left="4pt" text-align="center" border-bottom-color="black" border-bottom-width="0.7pt" border-bottom-style="solid"> 

         Estimated 
        </fo:block> 
</fo:table-cell> 
</fo:table-row> 
<fo:table-row/> 
<fo:table-row> 
<fo:table-cell border-top-color="black" border-top-width="0.7pt" border-top-style="solid"> 
<fo:block/> 
</fo:table-cell> 
</fo:table-row> 
</fo:table-body> 
</fo:table> 
</fo:static-content> 
<fo:static-content flow-name="xsl-region-after"> 
<fo:table padding-top="0.1cm" font-size="8pt" font-family="TradeGothicCondensed" border-collapse="separate" table-layout="fixed"> 
<fo:table-body> 
<fo:table-row> 
<fo:table-cell> 
<fo:block line-height="10pt" font-size="8pt" text-align="left">Our disclaimer.</fo:block> 
</fo:table-cell> 
<fo:table-cell> 
<fo:block vertical-align="bottom" line-height="10pt" font-family="TradeGothicCondensed" font-size="8pt" text-align="right"> 
      Page 
      <fo:page-number/>/
      <fo:page-number-citation ref-id="last-page"/> 
</fo:block> 
</fo:table-cell> 
</fo:table-row> 
</fo:table-body> 
</fo:table> 
</fo:static-content> 
<fo:flow flow-name="xsl-region-body"> 
<fo:table font-size="8pt" font-family="TradeGothicCondensed" border-collapse="separate" table-layout="fixed"> 
<fo:table-body font-family="TradeGothicCondensed"> 
<fo:table-row> 
<fo:table-cell> 
<fo:block font-weight="bold" font-size="14pt" font-family="TradeGothicCondensed" text-align="left" number-columns-spanned="0"/> 
</fo:table-cell> 
</fo:table-row> 
<fo:table-row> 
<fo:table-cell> 
<fo:block line-height="13pt" font-weight="bold">A portfolio name</fo:block> 
</fo:table-cell> 
</fo:table-row> 
<fo:table-row> 
<fo:table-cell display-align="after"> 
<fo:block line-height="12pt" padding-left="3pt" vertical-align="top" text-align="left">A portfolio name</fo:block> 
</fo:table-cell> 
</fo:table-row> 
...etc... 

Почему добавить эту одиночную линию раздутие мой Pdf скачать? Спасибо

+0

Ваш образец FO не содержит никакой 'fo: table-column', но ваш код указывает, что вы создадите два или более. Можете ли вы показать версию с «fo: table-column», которая взрывается для вас? –

ответ

1

Похоже, что с FOP вам нужен один fo:table-column для каждого столбца в таблице, или вам ничего не нужно.

Рекомендация XSL 1.1 не требует этого, AFAICT, но он также не говорит, что происходит для несоответствия в столбцах.

Так вы говорите, что удалить одну строку и не производят fo:table-column, и так как вы, казалось бы, также генерации fo:table-column на основе dist_dates и генерации fo:table-cell на основе информации, портфолио, похоже, ваша логика для создания fo:table-column не совсем верно. Если вам не нужна ширина или другие свойства, установленные на fo:table-column, нет никакого вреда, если вы их опустите.

+0

Я думаю, что нам нужны эти свойства ширины – codyc4321

+0

Можете ли вы подтвердить, правильно ли делать 'fo: table-column' на основе' dist_dates'? FOP по-прежнему имеет только фиксированный макет таблицы (http://xmlgraphics.apache.org/fop/compliance.html), поэтому вам нужно как-то установить ширину. Если вы создаете один столбец fo: table-column для каждого столбца, вам следует избегать сообщения об ошибке FOP. Я не знаю, реализует ли это FOP, но вы должны опустить «fo: table-column» и указать 'width' по крайней мере в некоторой из« fo: table-cell »в первой таблице fo: -row' за тот же эффект (см. https://www.w3.org/TR/REC-CSS2/tables.html#width-layout). –

 Смежные вопросы

  • Нет связанных вопросов^_^