Trasformare un XML in PDF utilizzando FOP

Tips sui fogli di stile

Trasformare un XML in PDF utilizzando FOP

Messaggioda alesslud » gio mar 06, 2008 4:09 pm

Trasformare un XML in PDF utilizzando FOP

il file xsl:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="fo">
<xsl:output method="xml" version="1.0" omit-xml-declaration="no" indent="yes"/>
<xsl:param name="versionParam" select="'1.0'"/>
<!-- ========================= -->
<!-- root element: projectteam -->
<!-- ========================= -->
<xsl:template match="root">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="simpleA4" page-height="29.7cm" page-width="45cm" margin-top="2cm" margin-bottom="2cm" margin-left="2cm" margin-right="2cm">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="simpleA4">
<fo:flow flow-name="xsl-region-body">
<fo:block font-size="14pt" font-weight="bold" space-after="5mm">Tabella stipendi mensili lordi dal 1° gennaio 2007 (D.S.F. n. 2485 del 6 febbraio 2007) <fo:inline color="#FFFFFF">................................................................................</fo:inline>personale in servizio al 31 dicembre 2000
</fo:block>
<fo:block font-size="9pt">
<fo:table table-layout="fixed" width="100%" border-collapse="separate">
<fo:table-column column-width="4cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:block>
<!-- questa parte deve rimanere vuota -->
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
Iniziale
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
1.
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
2.
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
3.
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
4.
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
5.
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
6.
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
7.
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
8.
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
9.
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
10.
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
11
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
12
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
13
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
14
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
15
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
16
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
17
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
18
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
<fo:block> ______________________________________________________________________________________________________________________________________________________________________________
</fo:block>
<fo:block font-size="9pt">
<fo:table table-layout="fixed" width="100%" border-collapse="separate">
<fo:table-column column-width="4cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-body>
<xsl:for-each select="Fasce">
<xsl:apply-templates select="Fascia"/>
</xsl:for-each>
</fo:table-body>
</fo:table>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
<!-- ========================= -->
<!-- child element: member -->
<!-- ========================= -->
<xsl:template match="Fascia">
<fo:table-row>
<fo:table-cell border="20" background="#FFFFFF">
<fo:block>
<xsl:value-of select="demonFascia"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:if test="mesiIniziale = 12">
<fo:inline color="#ffffff">..</fo:inline>(<xsl:value-of select="iniziale"/>)
</xsl:if>
<xsl:if test="mesiIniziale != 12">
<fo:inline color="#ffffff">..</fo:inline><xsl:value-of select="iniziale"/>
</xsl:if>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="impo1"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="impo2"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="impo3"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="impo4"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="impo5"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="impo6"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="impo7"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="impo8"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="impo9"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="impo10"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="impo11"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="impo12"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="impo13"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="impo14"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="impo15"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="impo16"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="impo17"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="impo18"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell border="20" background="#FFFFFF">
<fo:block>
<fo:inline color="#FFFFFF">.</fo:inline>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:template>
</xsl:stylesheet>
alesslud
Site Admin
 
Messaggi: 779
Iscritto il: mer nov 08, 2006 8:09 am

Il file XML

Messaggioda alesslud » gio mar 06, 2008 4:11 pm

<root>
<Fasce>
<Fascia>
<demonFascia>Ciao ciao</demonFascia>
<idde>1</idde>
<iniziale>2</iniziale>
<mesiIniziale>3</mesiIniziale>
<impo1>4</impo1>
<mesi1>5</mesi1>
<impo2>6</impo2>
<mesi2>7</mesi2>
<impo3>8</impo3>
<mesi3>9</mesi3>
<impo4>10</impo4>
<mesi4>11</mesi4>
<impo5>12</impo5>
<mesi5>13</mesi5>
</Fascia>
<Fascia>
<demonFascia>Bis bis</demonFascia>
<idde>14</idde>
<iniziale>15</iniziale>
<mesiIniziale>ccccc</mesiIniziale>
<impo1>aaaa</impo1>
<mesi1>dddd</mesi1>
<impo2>ssss</impo2>
<mesi2>dsads</mesi2>
<impo3>pippo</impo3>
<mesi3>pluto</mesi3>
<impo4>ciao</impo4>
<mesi4>ciaov</mesi4>
<impo5>dsd</impo5>
<mesi5>dddd</mesi5>
</Fascia>
</Fasce>
</root>
alesslud
Site Admin
 
Messaggi: 779
Iscritto il: mer nov 08, 2006 8:09 am

Configurazione ed installazione di FOP:

Messaggioda alesslud » gio mar 06, 2008 4:17 pm

Configurazione ed installazione di FOP:
scaricare le librerie dal sito http://xmlgraphics.apache.org/fop/
Impostare la variabile d'ambiente LOCAL_FOP_HOME con i seguenti valori:
C:\yourdirectoryoffop\fop-version

Eseguire il bat che si trova dentro FOP: un tool tipo XML Spy aiuta all'utilizzo di FOP in quanto imposta la chiamata alla libreria in automatico.

Link utili all'utilizzo di XSLT è possibile trovarli all'indirizzo che contiene anche suggerimenti utili per tutti i formati che rispettano lo standard XML
http://msdn2.microsoft.com/en-us/library/ms256177.aspx

Un altro link utile è:
http://www.w3schools.com/xslfo/xslfo_pages.asp
alesslud
Site Admin
 
Messaggi: 779
Iscritto il: mer nov 08, 2006 8:09 am


Torna a CSS e XSL

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron