Probleme de xslfo + php

Probleme de xslfo + php - XML/XSL - Programmation

Marsh Posté le 04-12-2004 à 17:05:28    

Salut,
 
 
j'utilise des fichiers xml avec des .xsl pour générer des .pdf à partir de FOP.
 
Mon but ultime est d'appeler tout ca via une page en php( peut etre pas la meilleure idée).
 
Mais mon problème est que bien évidemment je ne peux pas appeler FOP à partir de ma page PHP.
 
J'ai trouvé des libs PHP5 qui pourraient remplacer FOP je crois, mais le server sur lequel ca va tourner est en PHP4, et la je ne sais pas trop comment faire (d'ailleurs dans le cas du php5 pas trop non plus).
 
Existe t il un moyen pour que je puisse appeler fop, et lui donner le JRE dont il a besoin ? Y a t il une meilleure solution (qui respecterait alors mon script xslfo conçu pour FOP au maximum) ?
 
Merc bien  :hello:  
 
 :sol:  
[La suite est résolu]
 :sol:  
Mais je me heure à des soucis, on m'a donné des bouts de code qui devraient tourner mais FOP me jète  
Par exemple il refuse les balises br ou td.
 
Je suis très embeter pour faire mes tableaux.
 
J'ai tenté des trucs dans ce genre (mais c'est pas simple) :  
 

Code :
  1. fo:page-sequence master-reference="Le Vre Journal de l'ECE"> <!-- sommaire du journal -->
  2.   <fo:flow flow-name="xsl-region-body">
  3.    <fo:block font-size="10pt">
  4.     <fo:table table-layout="fixed" width="100%">
  5.      <fo:table-column column-width="proportional-column-width(50)"/>
  6.      <fo:table-column column-width="proportional-column-width(50)"/>
  7.      <fo:table-body>
  8.       <xsl:apply-templates/>
  9.      </fo:table-body>
  10.     </fo:table>
  11.    </fo:block>
  12.   </fo:flow>
  13.  </fo:page-sequence>
  14. </fo:root>
  15. </xsl:template>
  16. <xsl:template match="Journal">
  17.     <fo:table-row>
  18.  <fo:table-cell>
  19.   <fo:block position="absolute" left="330px" top="200px">
  20.    <fo:external-graphic src="url('images/logo_gd.jpeg')" margin-bottom="20px" width="250px"  height="175px"/>
  21.   </fo:block>
  22.  </fo:table-cell>
  23.  <fo:table-cell>
  24.   <fo:block position="absolute" left="335px" top="800px">
  25.    Le VRE Journal
  26.   </fo:block>
  27.   <fo:block position="absolute" left="335px" top="200px">
  28.    Veritablement redige par des Electrocentraliens
  29.   </fo:block>
  30.    
  31.   <fo:block position="absolute" left="335px" top="200px">
  32.    LVJ - Gratuit
  33.   </fo:block>
  34.  </fo:table-cell>
  35. </fo:table-row>
  36. <fo:table-row>
  37.  <fo:table-cell>
  38.   <fo:block position="absolute" left="335px" top="200px">
  39.    <fo:external-graphic src="url('images/ban.jpg')" width="625px"  height="75px"/>
  40.   </fo:block>
  41.  </fo:table-cell>
  42. </fo:table-row>
  43. <fo:table-row>
  44.  <fo:table-cell>
  45.   <fo:block font-size="medium" margin-top="35px" >
  46.    <xsl:for-each select="Article">
  47.     hello
  48.    </xsl:for-each>
  49.   </fo:block>
  50.  </fo:table-cell>


 
Mais quand je veux un tableau different, je ne sais pas comment le définir :(
 
Merci bien,


Message édité par gee le 08-12-2004 à 18:13:44
Reply

Marsh Posté le 04-12-2004 à 17:05:28   

Reply

Marsh Posté le 04-12-2004 à 17:07:22    

mon but est de faire fonctionner des trucs dans ce genre :  

Code :
  1. <fo:block font-size="medium" margin-top="35px" >
  2.    <xsl:for-each select="Journal/Article">
  3.     <fo:table border="1" width="275px" border-width="1" border-style="outset" background-color="#FFFF00">
  4.      <xsl:if test="rubrique='Y'"> <!-- rubrique Y -->
  5.       <td text-align="center" padding="6" border-style="inset" border-width="1">
  6.        <xsl:apply-templates select="Titre"/>
  7.       </td>
  8.       <td text-align="center" padding="6" border-style="inset" border-width="1">
  9.        P.
  10.        <xsl:apply-templates select="page"/>
  11.       </td>
  12.        </xsl:if>
  13.     </fo:table>
  14.      </xsl:for-each> </fo-block>


Message édité par gee le 04-12-2004 à 17:07:52
Reply

Marsh Posté le 05-12-2004 à 13:51:40    

résolu en mettant tout en un en fait, j'avais suivi un exemple qui séparait le tableau de ses données, mais c'est trop compliqué pour moi.

Code :
  1. <fo:block font-size="medium" margin-top="35px" >
  2.     toto
  3.     <xsl:for-each select="Article">
  4.      <fo:table table-layout="fixed" border="1" width="250px" border-width="1" border-style="outset" background-color="#FFFF00">
  5.       <xsl:if test="rubrique='Y'"> <!-- rubrique Y -->
  6.        <fo:table-column column-width="proportional-column-width(43)"/>
  7.        <fo:table-column column-width="proportional-column-width(7)"/>
  8.        <fo:table-body>
  9.         <fo:table-row border="1">
  10.          <fo:table-cell border-style='solid' border-width='1px' padding='1px' text-align="center">
  11.           <fo:block>
  12.            <xsl:apply-templates select="Titre"/>
  13.           </fo:block>
  14.          </fo:table-cell>
  15.          <fo:table-cell border-style='solid' border-width='1px' padding='1px' text-align="center">
  16.           <fo:block>
  17.            P.
  18.            <xsl:apply-templates select="page"/>
  19.           </fo:block>
  20.          </fo:table-cell>
  21.         </fo:table-row>
  22.        </fo:table-body>
  23.       </xsl:if>
  24.      </fo:table>
  25.     </xsl:for-each>
  26.    </fo:block>

Reply

Marsh Posté le 08-12-2004 à 18:02:57    

Up, CF 1er post
 
j'utilise des fichiers xml avec des .xsl pour générer des .pdf à partir de FOP.
 
Mon but ultime est d'appeler tout ca via une page en php( peut etre pas la meilleure idée).
 
Mais mon problème est que bien évidemment je ne peux pas appeler FOP à partir de ma page PHP.
 
J'ai trouvé des libs PHP5 qui pourraient remplacer FOP je crois, mais le server sur lequel ca va tourner est en PHP4, et la je ne sais pas trop comment faire (d'ailleurs dans le cas du php5 pas trop non plus).
 
Existe t il un moyen pour que je puisse appeler fop, et lui donner le JRE dont il a besoin ? Y a t il une meilleure solution (qui respecterait alors mon script xslfo conçu pour FOP au maximum) ?
 
Merc bien  :hello:  

Reply

Marsh Posté le 08-12-2004 à 18:43:55    

Salut,
 
en fait je ne peux pas faire de modification sur le server (impossible de rajouter des modules php, de configurer des modules deja existants, ou d'installer php5 .)  
 
 
Donc je ne vois pas trop comment m'en sortir.

Reply

Marsh Posté le 09-12-2004 à 17:09:04    

C'est peut etre possible de générer un flux PDF, mais pas forcément le fichier PDF. Comme quand sous IE/Mozz je lis un fichier xml avec son xsl associé.
 
Mais je ne vois pas comment faire,
acrobat reader me refuse bien évidemment de lire mon fichier xml de base.
 
Merci bien,


Message édité par gee le 09-12-2004 à 17:09:39
Reply

Marsh Posté le 27-12-2004 à 06:51:29    

lol je tombe par hasard sur ton topic et j'en rigole un peut du faite que tu parlais tous seul :).  
En espérant que le sujet a servi a plus d'un !

Reply

Marsh Posté le 27-12-2004 à 13:28:16    

Bah en fait j'ai fini avec exec + FOP et une feuille de style XSLFO :)
 
Bien evidemment pour exec, j'ai utilisé un server apache maison.
 
Sinon bah je parle seul car personne ne voulait parler avec moi :cry:

Reply

Marsh Posté le 10-01-2006 à 08:08:37    

Bonjour Gee,
 
Je suis très content de voir que quelqu'un a recontré les mêmes problèmes que moi :)  
 
en espérant que tu participes toujours activement à ce forum, je me permets de te demander si il était possible que tu post les sources de tes scripts qui utilisent fop en php?
 
Franchement, ça m'enlèverait une belle épine du pied.
 
D'avance merci.
 
yuri7

Reply

Marsh Posté le 10-01-2006 à 08:23:53    

Salut,
 
utiliser fop en php ne me parait plus la meilleure des choses aujourd'hui, des paquets existent en php pour créer des pdf directement en passant par xslt sans passer par exec(), ce qui est une bonne chose.
 
Je n'ai plus en tête le nom de ces paquets là, mais ca ne doit pas etre bien difficile à trouver.

Reply

Marsh Posté le 10-01-2006 à 08:23:53   

Reply

Marsh Posté le 10-01-2006 à 08:29:44    

Ok voila ce que j'aurais utilisé si j'avais eu plus de temps (et si j'y avais pensé plus tot ..) : http://www.fpdf.org/
 
Pour mon script je regarderai ce soir si je l'ai encore quelque part.

Reply

Marsh Posté le 10-01-2006 à 08:33:00    

MErci pour ta réponse Gee,
 
Le problème, c'est que je n'ai pas le choix, je suis obligé d'utiliser cette manière de travailler  :heink:  
 
Si tu pouvais essayer de retrouver ton script et le poster, je ferais façonner une statue à ton effigie...
 
En tous cas merci

Reply

Marsh Posté le 10-01-2006 à 08:44:26    

Bon j'ai regardé par ssh sur mon fixe, et je ne trouve rien, je regarderai ce soir sur mon portable voir j'ai gardé quelque chose, je pense que oui mais on verra bien.
 
Sinon pourquoi es tu obligé d'utiliser FOP ?
Tu dois savoir qu'exec() est dispo sur très peu de server apache (pas sur free, pas sur la plupart des servers gratuits, pareil pour les servers d'écoles souvent).

Reply

Marsh Posté le 10-01-2006 à 09:01:52    

C'est un travail de diplôme qui sera soit utiliseé en local, soit sur un serveur test d'une école, donc ils mettront tout ce qu'il faut pour que ça tourne. Je suis conscient que c'est sûrement pas la meilleure solution de travailler de cette manière, la preuve, pour trouver quelqu'un qui a déjà fait ça, c'est la gallère.

Reply

Marsh Posté le 10-01-2006 à 10:17:16    

Bah si tu me dis sur quoi tu bloques je pourrais toujours tenter de t'aider (si je me rappelle de quelque chose)

Reply

Marsh Posté le 11-01-2006 à 10:16:02    

1. J'ai une application web qui génère des documents xml.  
2. A partir de ces documents xml, j'ai besoin de le mettre en forme avec xsl-fo afin de générer un document soit pdf, soit openoffice par exemple... Pour commencer, déjà pdf.
3. Si tu penses que la commande php exec() peut faire l'affaire, ce serait cool que tu puisse me donner cette ligne de code.
 
As-tu retrouvé ton script?
 
MErci beaucoup GEE

Reply

Marsh Posté le 11-01-2006 à 20:08:57    

Pas retrouvé non, même sur mon portable, faudra que je cherche ailleurs on dirait.
sinon l'exec te permet d'appeler FOP avec les arguments qui vont bien (de mémoire le XML et le XSLFO).

Reply

Marsh Posté le 12-01-2006 à 10:44:13    

A part ça, j'ai un problème concernant fop :
 
- Doit-on installer ce processeur? Si oui, de quelle manière?
- Si non, doit-on l'inclure comme une librairie? Si oui, de quelle manière inclure une librairie java en php?
 

Reply

Marsh Posté le 12-01-2006 à 15:23:56    

J'ai réussi à utiliser FOP au travers de php.
 
Il suffit d'appeler fop.bat et de lui transmettre les bons fichiers.
Afin de ne pas m'embêter, j'ai ajouté fop.bat dans les variables d'environnements du path.
 

Code :
  1. exec("fop ../xml/questionnaires.fo ../../data/pdf/ohyeah.pdf" );


 
Maintenant, je dois utiliser mon document .xml ainsi qu'un document .xslt afin de générer un .fo pour finalement générer le pdf.
 
Savez-vous comment générer un document .fo à partir d'un .xml et d'un xslt?

Message cité 1 fois
Message édité par yuri7 le 12-01-2006 à 15:25:51
Reply

Marsh Posté le 12-01-2006 à 15:41:33    

fop monfichier.xml -l'optionquivabien monfichier.xslt -l'optionquivabien monfichier.pdf
 
je ne vois pas l'interet du .fo (d'ailleurs je ne sais même pas ce que c'est).
 
Sinon d'après tes questions je te sens un peu perdu tout de même :)

Reply

Marsh Posté le 12-01-2006 à 15:42:29    

yuri7 a écrit :

J'ai réussi à utiliser FOP au travers de php.
 
Il suffit d'appeler fop.bat et de lui transmettre les bons fichiers.
Afin de ne pas m'embêter, j'ai ajouté fop.bat dans les variables d'environnements du path.
 

Code :
  1. exec("fop ../xml/questionnaires.fo ../../data/pdf/ohyeah.pdf" );


 
c'est bien ce que je te disais de faire :D


Reply

Marsh Posté le 19-09-2006 à 12:12:50    

Salut,  
 
je viens de retrouver des bouts de scripts si ca t'interesse toujours :)

Reply

Marsh Posté le 02-01-2010 à 00:52:00    

Bonjour Gee!
moi je suis interessée par ton script
j'ai exactement le même pb que Yuri7, et le pb c'est que j'utilise php4, car depuis ma fac et je ne sais pas du tout comment me servir de fop!
Mais je sais une chose c'est que je veux du pdf, via php, car j'ai fait mon site web en xml et xsl.
Merci pr ton aide.

Reply

Marsh Posté le 02-01-2010 à 05:01:54    

desole je n'ai plus rien sous la main la...


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
Reply

Marsh Posté le 02-01-2010 à 12:00:18    

En même temps après 4 ans ça m'étonne pas :D


---------------
Topics : NFSU2 - NFS : Most Wanted - Volant PC Site :  NFS-Mania.com
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed