Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
CRÉER UN PDF AVEC GTK ET LATEX
Information sur la source
Description
En GTK+ pur, il n'y a pas de widgets capable de gérer directement la création ou l'affichage de fichiers pdf. Donc, pour palier à ce manque, on va passer par l'utilisation de latex, et son équivalent pdflatex, pour générer de beaux rapports !! Voici un code qui fonctionne parfaitement sous Fedora Core 3 (encodage utf8)... A vous de vous en inspirer...
Source
- #include <gtk/gtk.h>
- #include <stdlib.h>
- #include <stdio.h>
-
- // gcc pdf_maker_v3.c -o pdf_maker.exe `pkg-config --cflags --libs gtk+-2.0`
-
- static GtkWidget *fenetre;
- static GtkWidget *vbox;
- static GtkWidget *label1;
- static GtkWidget *entrynom;
- static GtkWidget *label2;
- static GtkObject *spinbutton_adj;
- static GtkWidget *spinbutton;
- static GtkWidget *bout_creer;
-
- void creer_un_pdf(void);
-
- int main(int argc, char **argv)
- {
- gtk_init(&argc, &argv);
-
- fenetre = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_widget_set_size_request (fenetre, 420, 240);
- gtk_window_set_title (GTK_WINDOW (fenetre), "PDF-Maker");
- g_signal_connect(G_OBJECT(fenetre),"destroy",G_CALLBACK(gtk_main_quit), NULL);
-
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_container_add (GTK_CONTAINER (fenetre), vbox);
- gtk_container_set_border_width (GTK_CONTAINER (vbox), 15);
-
- label1 = gtk_label_new ("Tapez votre nom");
- gtk_box_pack_start (GTK_BOX (vbox), label1, FALSE, FALSE, 0);
-
- entrynom = gtk_entry_new ();
- gtk_box_pack_start (GTK_BOX (vbox), entrynom, TRUE, TRUE, 0);
-
- label2 = gtk_label_new ("Entrez votre âge :");
- gtk_box_pack_start (GTK_BOX (vbox), label2, FALSE, FALSE, 0);
-
- spinbutton_adj = gtk_adjustment_new (1, 0, 100, 1, 10, 10);
- spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adj), 1, 0);
- gtk_box_pack_start (GTK_BOX (vbox), spinbutton, TRUE, TRUE, 0);
-
- bout_creer = gtk_button_new_with_label("Créer le PDF");
- gtk_box_pack_start (GTK_BOX (vbox), bout_creer, FALSE, FALSE, 0);
- gtk_container_set_border_width (GTK_CONTAINER (bout_creer), 11);
-
- g_signal_connect(G_OBJECT(bout_creer),"clicked",G_CALLBACK(creer_un_pdf), NULL);
-
- gtk_widget_show_all(fenetre);
- gtk_main();
-
- return EXIT_SUCCESS;
- }
- //------------------------------------------------------------
- void creer_un_pdf(void)
- {
- FILE *futur_pdf;
-
- const gchar* nom;
- gdouble age;
-
- nom = gtk_entry_get_text(GTK_ENTRY(entrynom));
- age = gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinbutton));
-
- futur_pdf = fopen("./pdf_maker.tex","w");
-
- fprintf( futur_pdf, "\\documentclass{article}\n");
- fprintf( futur_pdf, "\\begin{document}\n");
- fprintf( futur_pdf, "Nom : %s \\\\ \n",nom);
- fprintf( futur_pdf, "Age : %.0f \n",age);
- fprintf( futur_pdf, "\\end{document}\n");
-
- fclose(futur_pdf);
-
- // lance la compilation du fichier *.tex créé plus haut
- system("pdflatex ./pdf_maker.tex");
-
- // lance kpdf une fois que le fichier pdf a été créé
- system("kpdf ./pdf_maker.pdf");
-
- // Si on lance le programme gtk depuis la console, le chemin où se trouvera
- // le pdf sera l'endroit où l'on est
- // Si on lance le programme depuis l'environnement graphique KDE, le pdf
- // se trouvera dans le folder par défaut, càd /home/utilisteur
- }
- //------------------------------------------------------------
-
#include <gtk/gtk.h>
#include <stdlib.h>
#include <stdio.h>
// gcc pdf_maker_v3.c -o pdf_maker.exe `pkg-config --cflags --libs gtk+-2.0`
static GtkWidget *fenetre;
static GtkWidget *vbox;
static GtkWidget *label1;
static GtkWidget *entrynom;
static GtkWidget *label2;
static GtkObject *spinbutton_adj;
static GtkWidget *spinbutton;
static GtkWidget *bout_creer;
void creer_un_pdf(void);
int main(int argc, char **argv)
{
gtk_init(&argc, &argv);
fenetre = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request (fenetre, 420, 240);
gtk_window_set_title (GTK_WINDOW (fenetre), "PDF-Maker");
g_signal_connect(G_OBJECT(fenetre),"destroy",G_CALLBACK(gtk_main_quit), NULL);
vbox = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (fenetre), vbox);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 15);
label1 = gtk_label_new ("Tapez votre nom");
gtk_box_pack_start (GTK_BOX (vbox), label1, FALSE, FALSE, 0);
entrynom = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (vbox), entrynom, TRUE, TRUE, 0);
label2 = gtk_label_new ("Entrez votre âge :");
gtk_box_pack_start (GTK_BOX (vbox), label2, FALSE, FALSE, 0);
spinbutton_adj = gtk_adjustment_new (1, 0, 100, 1, 10, 10);
spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adj), 1, 0);
gtk_box_pack_start (GTK_BOX (vbox), spinbutton, TRUE, TRUE, 0);
bout_creer = gtk_button_new_with_label("Créer le PDF");
gtk_box_pack_start (GTK_BOX (vbox), bout_creer, FALSE, FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (bout_creer), 11);
g_signal_connect(G_OBJECT(bout_creer),"clicked",G_CALLBACK(creer_un_pdf), NULL);
gtk_widget_show_all(fenetre);
gtk_main();
return EXIT_SUCCESS;
}
//------------------------------------------------------------
void creer_un_pdf(void)
{
FILE *futur_pdf;
const gchar* nom;
gdouble age;
nom = gtk_entry_get_text(GTK_ENTRY(entrynom));
age = gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinbutton));
futur_pdf = fopen("./pdf_maker.tex","w");
fprintf( futur_pdf, "\\documentclass{article}\n");
fprintf( futur_pdf, "\\begin{document}\n");
fprintf( futur_pdf, "Nom : %s \\\\ \n",nom);
fprintf( futur_pdf, "Age : %.0f \n",age);
fprintf( futur_pdf, "\\end{document}\n");
fclose(futur_pdf);
// lance la compilation du fichier *.tex créé plus haut
system("pdflatex ./pdf_maker.tex");
// lance kpdf une fois que le fichier pdf a été créé
system("kpdf ./pdf_maker.pdf");
// Si on lance le programme gtk depuis la console, le chemin où se trouvera
// le pdf sera l'endroit où l'on est
// Si on lance le programme depuis l'environnement graphique KDE, le pdf
// se trouvera dans le folder par défaut, càd /home/utilisteur
}
//------------------------------------------------------------
Conclusion
Voilà, en espérant que cela vous aide...
http://www.langagec.be/
http://forums.apinc.org/index.php
Ciao
Sources de la même categorie
Commentaires
|
|