You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-fr@cocoon.apache.org by Montier patrick <pa...@montier.com> on 2006/09/29 09:17:00 UTC
Question sitemap, redirection flux vers fichier?
Bonjour,
jutilise fo2pdf pour créer des pdf à la volée. Ca marche très bien mais je
souhaiterais rediriger le flux, non pas à lécran (ouverture du PDF dans le
navigateur) mais directement lenregistrer dans un fichier sur le serveur.
Voici ma config sitemap :
<map:match pattern="asp*/*/protected/cv.pdf">
<!-- first validate whether user has logged in -->
<map:act type="session-validator">
<map:parameter name="descriptor"
value="context://monsite/descriptors/params.xml"/>
<map:parameter name="validate" value="id_rus"/>
<!-- generate protected content -->
<map:aggregate element="page">
<map:part src="cocoon:/asp{../1}/{../2}/FE00061.inc"
strip-root="true"/>
<map:part
src="cocoon:/asp{../1}/{../2}/FE00061/protected/FEnavbar.inc"
element="navbar" strip-root="true"/>
</map:aggregate>
<map:transform src="stylesheets/{../2}/FE00061_fo.xsl">
</map:transform>
<map:serialize type="fo2pdf"/>
</map:act>
<!-- something was wrong, redirect to login page -->
<map:redirect-to uri="../FE00051.htm"/>
</map:match>
Est il possible de le faire directement via cocoon ou faut il que je passe
par une fonction java spécifique?
En vous remerciant
Patrick
RE: RE Question sitemap, redirection flux vers fichier?
Posted by Patrick Montier <pa...@montier.com>.
Merci,
Jai également trouvé ce code sur le forum cet après-midi, je lai adapté et
cela fonctionne parfaitement.
Je vous remercie de mavoir répondu
Cordialement
Patrick Montier
_____
De : Sebastien BARATHIEU [mailto:sebastien.barathieu@urssaf.fr]
Envoyé : vendredi 29 septembre 2006 18:13
À : users-fr@cocoon.apache.org
Objet : RE Question sitemap, redirection flux vers fichier?
Bonjour,
Vous pouvez utiliser ça :
<map:flow language="javascript">
<map:script src="pdf.flow"/>
</map:flow>
<map:match pattern="**.do">
<map:call function="makepdf">
<map:parameter name="folder1" value="{1}"/>
</map:call>
</map:match>
<!-- on transforme en une série de <xi:include
="cocoon://copy-pdf-xxx.html"/> -->
<map:transform src="dir2include.xsl">
<map:parameter name="folder1" value="{1}"/>
</map:transform>
<!-- on réalise l'inclusion qui par effet de bord va copier les
sur disque -->
<map:transform type="xinclude"/>
<!-- et on présente joliement la liste des fichiers qui ont été
énérés -->
<!--<map:transform src="result2html.xsl"/>-->
<!-- terminé! -->
avec un javascript pdf.flow du type:
function makepdf() {
var xml_file;
var pdf_file;
var outstreamPDF;
// the parameter passed to the script from the pipeline.
// This is the real path to the application context
var folder1 = Packages.java.lang.String(cocoon.parameters["folder1"]);
try {
// creating links to files
pdf_file = Packages.java.io.File( folder1 +".pdf");
// xml_file = Packages.java.io.File( "D:/Program Files/Apache Software
Foundation/Tomcat
5.0/webapps/cocoon/ImpressionLiasse/U13010000757_0404151956.xml");
// creating outputstream to dump the results of conversion to the file
outstreamPDF = new Packages.java.io.FileOutputStream( pdf_file );
// calling cocoon pipeline using processPipelineTo() method and dumping the
results to the outputstream
cocoon.processPipelineTo( "/ImpressionLiasse/" + folder1 +".pdf", null,
outstreamPDF );
// do not forget to close the outputstream
outstreamPDF.close();
// since the result is dumped to the filesystem we need to send smth. to the
browser
// to make it happy. So let's send just a usual .txt file with OK message
cocoon.sendPage("yes.txt", null);
} catch( ex ) {
//cocoon.log.error(ex);
// Smth. went wrong. Sending a error.txt file to the browser
cocoon.sendPage("error.txt", null);
}
}
ne pas oublier les fichiers error.txt et yes.txt pour le controle (simple
fihier .txt avec un texte au choix a à l'intérieur KO / OK par ex)
donc en faisant un requete http se terminant par le fichier xml à imprimer
avec l'extension .do vous rentrez dans le process de serialisation sur le
disque, un fichier resultat est même possible (non implémenté ici). Cette
méthode permet de traiter des flux importants.
A+
Sébastien BARATHIEU
EDI CFE
Etudes
CIPAM Marseille
sebastien.barathieu@urssaf.fr
Groupe CFE : 04 91 74.96.12
Personnel : 04.91.74.97.11
Fax : 04.91.74.97.12
masquage des détails pour inactif"Montier patrick"
<pa...@montier.com>"Montier patrick" <pa...@montier.com>
"Montier patrick" <pa...@montier.com>
29/09/2006 09:17
Veuillez répondre à
users-fr@cocoon.apache.org
A
<us...@cocoon.apache.org>
cc
Objet
Question sitemap, redirection flux vers fichier?
Bonjour,
jutilise fo2pdf pour créer des pdf à la volée. Ca marche très bien mais je
souhaiterais rediriger le flux, non pas à lécran (ouverture du PDF dans le
navigateur) mais directement lenregistrer dans un fichier sur le serveur.
Voici ma config sitemap :
<map:match pattern="asp*/*/protected/cv.pdf">
<!-- first validate whether user has logged in -->
<map:act type="session-validator">
<map:parameter name="descriptor"
value="context://monsite/descriptors/params.xml"/>
<map:parameter name="validate" value="id_rus"/>
<!-- generate protected content -->
<map:aggregate element="page">
<map:part src="cocoon:/asp{../1}/{../2}/FE00061.inc"
strip-root="true"/>
<map:part
src="cocoon:/asp{../1}/{../2}/FE00061/protected/FEnavbar.inc"
element="navbar" strip-root="true"/>
</map:aggregate>
<map:transform src="stylesheets/{../2}/FE00061_fo.xsl">
</map:transform>
<map:serialize type="fo2pdf"/>
</map:act>
<!-- something was wrong, redirect to login page -->
<map:redirect-to uri="../FE00051.htm"/>
</map:match>
Est il possible de le faire directement via cocoon ou faut il que je passe
par une fonction java spécifique?
En vous remerciant
Patrick
RE Question sitemap, redirection flux vers fichier?
Posted by Sebastien BARATHIEU <se...@urssaf.fr>.
Bonjour,
Vous pouvez utiliser ça :
<map:flow language="javascript">
<map:script src="pdf.flow"/>
</map:flow>
<map:match pattern="**.do">
<map:call function="makepdf">
<map:parameter name="folder1" value="{1}"/>
</map:call>
</map:match>
<!-- on transforme en une série de <xi:include
="cocoon://copy-pdf-xxx.html"/> -->
<map:transform src="dir2include.xsl">
<map:parameter name="folder1" value="{1}"/>
</map:transform>
<!-- on réalise l'inclusion qui par effet de bord va
copier les
sur disque -->
<map:transform type="xinclude"/>
<!-- et on présente joliement la liste des fichiers qui
ont été
énérés -->
<!--<map:transform src="result2html.xsl"/>-->
<!-- terminé! -->
avec un javascript pdf.flow du type:
function makepdf() {
var xml_file;
var pdf_file;
var outstreamPDF;
// the parameter passed to the script from the pipeline.
// This is the real path to the application context
var folder1 = Packages.java.lang.String(cocoon.parameters["folder1"]);
try {
// creating links to files
pdf_file = Packages.java.io.File( folder1 +".pdf");
// xml_file = Packages.java.io.File( "D:/Program Files/Apache Software
Foundation/Tomcat 5.0
/webapps/cocoon/ImpressionLiasse/U13010000757_0404151956.xml");
// creating outputstream to dump the results of conversion to the
file
outstreamPDF = new Packages.java.io.FileOutputStream( pdf_file );
// calling cocoon pipeline using processPipelineTo() method and
dumping the results to the outputstream
cocoon.processPipelineTo( "/ImpressionLiasse/" + folder1 +".pdf",
null, outstreamPDF );
// do not forget to close the outputstream
outstreamPDF.close();
// since the result is dumped to the filesystem we need to send smth.
to the browser
// to make it happy. So let's send just a usual .txt file with OK
message
cocoon.sendPage("yes.txt", null);
} catch( ex ) {
//cocoon.log.error(ex);
// Smth. went wrong. Sending a error.txt file to the browser
cocoon.sendPage("error.txt", null);
}
}
ne pas oublier les fichiers error.txt et yes.txt pour le controle (simple
fihier .txt avec un texte au choix a à l'intérieur KO / OK par ex)
donc en faisant un requete http se terminant par le fichier xml à imprimer
avec l'extension .do vous rentrez dans le process de serialisation sur le
disque, un fichier resultat est même possible (non implémenté ici). Cette
méthode permet de traiter des flux importants.
A+
|--------------+---------------------------------+----------------------------------|
| | Sébastien BARATHIEU | sebastien.barathieu@urssaf.fr |
| | EDI CFE | |
| | Etudes | Groupe CFE : 04 91 74.96.12 |
| | CIPAM Marseille | Personnel : 04.91.74.97.11 |
| | | Fax : 04.91.74.97.12 |
|--------------+---------------------------------+----------------------------------|
"Montier patrick"
<patrick@montier.
com> A
<us...@cocoon.apache.org>
29/09/2006 09:17 cc
Objet
Veuillez répondre Question sitemap, redirection flux
à vers fichier?
users-fr@cocoon.a
pache.org
Bonjour,
j‘utilise fo2pdf pour créer des pdf à la volée. Ca marche très bien mais je
souhaiterais rediriger le flux, non pas à l’écran (ouverture du PDF dans le
navigateur) mais directement l’enregistrer dans un fichier sur le serveur.
Voici ma config sitemap :
<map:match pattern="asp*/*/protected/cv.pdf">
<!-- first validate whether user has logged in -->
<map:act type="session-validator">
<map:parameter name="descriptor"
value="context://monsite/descriptors/params.xml"/>
<map:parameter name="validate" value="id_rus"/>
<!-- generate protected content -->
<map:aggregate element="page">
<map:part src="cocoon:/asp{../1}/{../2}/FE00061.inc"
strip-root="true"/>
<map:part
src="cocoon:/asp{../1}/{../2}/FE00061/protected/FEnavbar.inc"
element="navbar" strip-root="true"/>
</map:aggregate>
<map:transform src="stylesheets/{../2}/FE00061_fo.xsl">
</map:transform>
<map:serialize type="fo2pdf"/>
</map:act>
<!-- something was wrong, redirect to login page -->
<map:redirect-to uri="../FE00051.htm"/>
</map:match>
Est il possible de le faire directement via cocoon ou faut il que je passe
par une fonction java spécifique?
En vous remerciant
Patrick