bonjour...
je voudrais savoir comment executer une ligne de commande sous C#.
je travaille avec FOP pour avoir des Fichiers PDF.
voici ma commande :
c:\fop...
FOP -XML myfile.xml -XSL mysheat.xsl -pdf myresult.pdf
merci pour votre aide
bonjour...
je voudrais savoir comment executer une ligne de commande sous C#.
je travaille avec FOP pour avoir des Fichiers PDF.
voici ma commande :
c:\fop...
FOP -XML myfile.xml -XSL mysheat.xsl -pdf myresult.pdf
merci pour votre aide
il faut utiliser la class Process (dans System.Diagnostics)
fais une recherche dans le forum, il y a plein d'exemples
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Si, en utilisant ProcessStartInfo.RedirectStandardOutput, et l'évènement OutputDataReceived du process
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
SVP j'ai juste une petite question :
y une erreur au niveau de mode code
pkoi il reconnait pas Server.MapPath("\\donnees.fo") dans cette commande.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.EnableRaisingEvents=false; proc.StartInfo.FileName = "C:\\fop-0.95beta\\FOP"; proc.StartInfo.Arguments = "-xml Server.MapPath("\\donnees.fo") - xsl Server.MapPath("\\feuille.xsl") - pdf Server.MapPath("\\resultat.pdf")"; proc.Start(); proc.WaitForExit();
merci bien
Les guillemets servent à délimiter une chaîne de caractères. Si tu as des guillemets dans un chaîne de caractères tu dois les échapper
Code : Sélectionner tout - Visualiser dans une fenêtre à part proc.StartInfo.Arguments = "-xml Server.MapPath(\"\\donnees.fo\") - xsl Server.MapPath(\"\\feuille.xsl\") - pdf Server.MapPath(\"\\resultat.pdf\")";
+1 mais autant utiliser :
tarekos prete attention au message se storminon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part proc.StartInfo.FileName = @"C:\\fop-0.95beta\\FOP";
l'invite dos s'excute avec les deux méthodes :
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part proc.StartInfo.FileName = @"C:\\fop-0.95beta\\FOP";
mais l'excution ne reconnais pas l'argument passé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part proc.StartInfo.FileName = "C:\\fop-0.95beta\\FOP";
le resultat affiche des erreur dans l'invite DOS comme koi FOP à été executer sans commande !
Code : Sélectionner tout - Visualiser dans une fenêtre à part proc.StartInfo.Arguments = "-xml Server.MapPath(\"\\donnees.fo\") - xsl Server.MapPath(\"\\feuille.xsl\") - pdf Server.MapPath(\"\\resultat.pdf\")";
Merci bien
Les espaces entre les tirets et la commande ne pourraient pas gêner ?
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part - xsl Server.MapPath...
A mon avis çà ne doit pas trop lui plaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part - pdf Server.MapPath...
vous avez raison c'etait un pb à cause des espaces -XML ???? - XSL ??
- et la j'ai un autre probleme, j'ai dans mon application mes fichiers XML et XSL, alors il reconnais pas Server.MapPath
Code : Sélectionner tout - Visualiser dans une fenêtre à part proc.StartInfo.Arguments = "-xml Server.MapPath(\"\\donnees.xml\") - xsl Server.MapPath(\"\\feuille.xsl\") - pdf Server.MapPath(\"\\resultat.pdf\")";
je vous remercie j'ai trouvé la réponse :
merci beaucoup, si vous pouvez juste me donner l'intruction qui me permet de rediriger cette sortie en streaming .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 proc.EnableRaisingEvents=false; string fic_Xml = Server.MapPath("\\Donnees.xml"); string fic_Xsl = Server.MapPath("\\feuille.xsl"); string fic_Res_Pdf = Server.MapPath("\\resultat.pdf"); string chemin = "-xml \""+fic_Xml+"\" -xsl \""+fic_Xsl+"\" -pdf \""+fic_Res_Pdf+"\""; proc.StartInfo.FileName = "C:\\fop-0.95beta\\FOP"; proc.StartInfo.Arguments = chemin; proc.Start() ; proc.WaitForExit() ; proc.Close();
merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardOutput = true; ... StringBuilder sb = new StringBuilder(); string line; while ((line = proc.StandardOutput.ReadLine()) != null) { text.AppendLine(line); }
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
FOP est un fichier .bat, non ? Je ne suis pas sûr que tu puisses exécuter directement un .bat avec Process, du moins pas si UseShellExecute est à false (et il doit être à false pour pouvoir utiliser RedirectStandardOutput...). Par contre tu peux lancer cmd.exe en lui passant en paramètre le script .bat et les paramètres
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
ben je t'ai montré comment récupérer la sortie (avec StandardOutput), après tu en fais ce que tu veux... qu'est-ce que tu veux dire par "rendre ça en streaming" ?
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
ça veux dire , au lieu que FOP genere le fichir sur disque, je veux que ça soit en memoire et afficher en browser
voila le type de sortie de fop qu'il supporte :
)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 [OUTPUT] outfile input will be rendered as PDF into outfile -pdf outfile input will be rendered as PDF (outfile req'd) -pdfa1b outfile input will be rendered as PDF/A-1b compliant PDF (outfile req'd, same as "-pdf outfile -pdfprofile PDF/A-1b") -awt input will be displayed on screen -rtf outfile input will be rendered as RTF (outfile req'd) -pcl outfile input will be rendered as PCL (outfile req'd) -ps outfile input will be rendered as PostScript (outfile req'd) -afp outfile input will be rendered as AFP (outfile req'd) -tiff outfile input will be rendered as TIFF (outfile req'd) -png outfile input will be rendered as PNG (outfile req'd) -txt outfile input will be rendered as plain text (outfile req'd) -at [mime] out representation of area tree as XML (outfile req'd) specify optional mime output to allow AT to be converted to final format later -print input file will be rendered and sent to the printer see options with "-print help" -out mime outfile input will be rendered using the given MIME type (outfile req'd) Example: "-out application/pdf D:\out.pdf" (Tip: "-out list" prints the list of supported MIME types) -mif outfile input will be rendered as MIF (FrameMaker) (outfile req'd) Experimental feature - requires additional fop-sandbox.jar. -svg outfile input will be rendered as an SVG slides file (outfile req'd) Experimental feature - requires additional fop-sandbox.jar. -foout outfile input will only be XSL transformed. The intermediate XSL-FO file is saved and no rendering is performed. (Only available if you use -xml and -xsl parameters
Si c'est du PDF que tu veux générer, tu ne peux pas l'inclure dans une page web : tu es obligé de générer le fichier et de renvoyer l'utilisateur vers l'URL du fichier.
La technique expliquée ci-dessus permet de récupérer la sortie standard du programme (i.e. la sortie sur la console), ça ne s'applique pas ici...
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Partager