2009-11-25 10 views
0
$ps = ps_new(); 
ps_open_file($ps,$filename); 
ps_begin_page($ps,$size,$size); 
ps_set_parameter($ps, 'SearchPath' , '/usr/share/texmf-texlive/fonts/afm/bluesky/cm'); 
$psfont = ps_findfont($ps, "cmr10", "", 0); 

ps_setfont($ps, $psfont, 12.0); 

ps_circle($ps,$size/2,$size/2,$size/10); 
ps_circle($ps,$size/4,$size/2,1); 
ps_circle($ps,$size/2,$size/4,1); 
ps_circle($ps,$size/4,$size/4,1);  
ps_fill($ps); 


//ps_show_xy($ps, 'test',$size/8,$size/8); 
//ps_stroke($ps); 

ps_end_page($ps); 
ps_close($ps); 
ps_delete($ps); 

Si je commente la ligne ps_setfont, il enregistre correctement un fichier .ps contenant des cercles pleins. Avec la ligne ps_setfont non commentée, firefox propose de sauvegarder quelque chose avec mon nom de fichier .php, mais ce qui est sauvegardé est de 0 octet.Génération de Postscript en PHP: le navigateur propose de sauvegarder le fichier

Je ne comprends pas pourquoi ce « téléchargement » est offert: -S

Répondre

0

Probablement il est une question d'une certaine sortie d'erreur se produit dans ps_setfont() la ligne d'appel. Essayez de définir:

error_reporting(E_ALL); 

et vérifier les messages d'erreur dans les journaux ou avant de l'envoyer en sortie au navigateur. Une fois que vous avez éliminé la sortie d'erreur, le script devrait fonctionner correctement.

+0

J'ai quelques-uns d'entre eux à la fin de la error.log apache: [Mer 25 novembre 2009 11:20:42] [Avis] enfant pid 18600 signal de sortie Segmentation fault (11) Note: les .ps le fichier ne doit pas être envoyé au navigateur, je l'incluerai plus tard dans LaTeX, et je produirai un fichier .pdf séparé. – Emyr

+0

Le code que vous avez posté est-il complet ou il y en a plus? J'ai supposé que le script générait et servait le .ps sur le HTTP basé sur votre mention de Firefox. Comment est-il demandé alors? – bbb

+0

Mon script retourne un fichier pdf généré en écrivant LaTeX dans un fichier .tex, en utilisant exec ("cd $ chemin && latex $ filename && pdflatex $ nomfichier", $ output), puis readfile ($ pdf); Ce que ce bloc de code est destiné à faire est de générer un diagramme postscript qui sera intégré dans le pdf. Les seules parties manquantes dans le code ci-dessus sont les bits qui définissent $ filename et $ size. Je suppose que php renvoie les mauvais en-têtes sans contenu à cause des erreurs de segmentation. – Emyr