- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Spaltenbreite in Tabellen bei PDF-Generierung
Hallo Zusammen,
ich habe bei der PDF-Generierung folgendes Problem. Im Allround-Absatz kรถnnen Tabellen erstellt werden. Diese kรถnnen aber nicht in der Spaltenbreite angepasst werden. Daher habe ich ein Workaround gebaut, bei welchem in den Zell-Eigenschaften (via Stilvorlage) einen Prozentwert hinterlegt werden kann welcher die Spaltenbreite der aktuellen Spalte definiert. Im HTML funktioniert das ganze.
Nun mรถchte ich diese Breite ins PDF รผbernehmen.
Im PDF-Kanal des Tabellen-Templates muss hierfรผr fรผr jede Spalte die Breite angegeben werden.
<fo:table space-before="3mm" space-after="3mm" table-layout="fixed" border="solid">
$CMS_FOR(colNr, [1..#table.cols])$
<fo:table-column column-width="auto"/>
$CMS_END_FOR$
<fo:table-body>
$CMS_VALUE(#content)$
</fo:table-body>
</fo:table>
Nun mรผsste ich fรผr die Breite der Spalten im betreffenden fo:table-column-Tag die korrekte Breite eintragen.
Gibt es einen Weg um im Tabellen-Template auf die sich in der Tabelle befindenden Zellen zuzugreifen? Gleichzeitig sollte ich die Information haben, in welcher Spalte sich die aktuell untersuchte Zelle befindet damit ich den Wert korrekt zuordnen kann.
Viele Grรผรe
- Labels:
-
Developers
-
Knowledgebase
- Tags:
- apache
- columnwidth
- fo
- generierung
- spaltenbreite
- stilvorlage
- tabellen
- table
- template
- zelleigenschaften
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Waldemar,
ich vermute hier hilft Dir das #cell-Systemobjekt weiter. Du kannst einzelne Attribute auslesen und die Position der Zelle in der Tabelle bestimmen.
Viele Grรผรe
Rafael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Waldemar,
benรถtigst du noch weitere Hilfe oder hat dir Rafaels Antwort bereits geholfen? In diesem Fall wรคre es toll, wenn du seine "richtige Antwort" entsprechend markierst.
Solltest du zwischenzeitlich eine eigene Lรถsung gefunden haben, wรคre es super, wenn du diese hier bereitstellst.
Viele Grรผรe
Michaela
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
diese Mรถglichkeit habe ich bereits untersucht. Aber leider habe ich keinen Weg gefunden um im Ausgabekanal des Tabellen-Templates (nicht Tabellenzelle o. zeile) auf die entsprechenden Attribute zugreifen zu kรถnnen. #cell liefert mir hier keine Ausgabe.
Auch die access oder dev API konnte mir hier nicht weiterhelfen.
Gibt es hierfรผr noch einen weiteren Lรถsungsansatz?
Viele Grรผรe
Waldemar
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Waldemar,
wie Rafael bereits beschrieben hat, sollte es kein Problem sein, die von dir gewรผnschten Werte auszulesen. In der Vorlage sollte es mรถglich sein, auf das Systemobjekt der Zelle zuzugreifen (#cell). Dazu gehรถren die Werte aus den Feldern #cell.col und #cell.row sowie #cell.rowNumber und #cellColNumber.
Ich habe mal das Beispiel aus dem Mithras Energy Projekt entsprechend angepasst:
<CMS_HEADER>
<CMS_FUNCTION name="Table" resultname="fr_st_table">
<CMS_PARAM name="tableData" value="st_table" />
<CMS_NODE_PARAM name="tableFormat">
<HEADERSPEC><![CDATA[<fo:table table-layout="fixed" width="100%">$CMS_FOR(cols, [1..#table.cols])$<fo:table-column column-width="$CMS_VALUE(168/#table.cols)$mm"/>$CMS_END_FOR$<fo:table-body>$CMS_VALUE(#content)$</fo:table-body></fo:table>]]></HEADERSPEC>
<ROW number="ALL"><![CDATA[<fo:table-row>$CMS_VALUE(#content)$</fo:table-row>]]></ROW>
<CELL row="0" col="ALL"><![CDATA[<fo:table-cell$CMS_IF(!#cell.colspan.isEmpty && #cell.colspan > 0)$ number-columns-spanned="$CMS_VALUE(#cell.colspan)$"$CMS_END_IF$ border-width="1mm" border-style="solid" border-color="#FFFFFF" background-color="#E5E7EC"><fo:block-container$CMS_IF(st_topLine)$ font-weight="bold"$CMS_END_IF$ padding="1mm" margin="1mm" overflow="hidden"><fo:block>$CMS_VALUE(#content )$ $CMS_VALUE(#cell.colNumber)$</fo:block></fo:block-container></fo:table-cell>]]></CELL>
<CELL row="ODD" col="ALL"><![CDATA[<fo:table-cell$CMS_IF(!#cell.colspan.isEmpty && #cell.colspan > 0)$ number-columns-spanned="$CMS_VALUE(#cell.colspan)$"$CMS_END_IF$ border-width="1mm" border-style="solid" border-color="#FFFFFF" background-color="$CMS_IF(st_altRows)$#DCDCDC$CMS_ELSE$#EDEFF2$CMS_END_IF$"><fo:block padding="1mm" margin="1mm">$CMS_VALUE(#content)$</fo:block></fo:table-cell>]]></CELL>
<CELL row="ALL" col="ALL"><![CDATA[<fo:table-cell$CMS_IF(!#cell.colspan.isEmpty && #cell.colspan > 0)$ number-columns-spanned="$CMS_VALUE(#cell.colspan)$"$CMS_END_IF$ border-width="1mm" border-style="solid" border-color="#FFFFFF" background-color="#EDEFF2"><fo:block padding="1mm" margin="1mm">$CMS_VALUE(#content)$</fo:block></fo:table-cell>]]></CELL>
</CMS_NODE_PARAM>
</CMS_FUNCTION>
</CMS_HEADER>
<fo:block space-after="3mm" space-before="3mm">
$CMS_IF(!st_headline.isEmpty)$
<fo:block space-after="2mm">
<fo:inline font-size="11pt" font-weight="bold" color="#CF6100">$CMS_VALUE(st_headline.convert)$</fo:inline>
</fo:block>
$CMS_END_IF$
$CMS_VALUE(fr_st_table)$
$CMS_IF(!st_underline.isEmpty)$$CMS_VALUE(st_underline)$$CMS_END_IF$
</fo:block>

