buffer drucken/pdf, geht das ?
-
Hi !
Ich habe mehrfach gelesen, das man mit Gtk und auch mit Gimp
Pdf-Dateien erstellen und drucken kann...Jezt frage ich mich Natürlich... kann man einen buffer z.B von einem Textview irgendwie drucken ? Oder, kann man vlt direkt ne pdf Datei erzeugen ?
Kann mir irgendjemand sagen wo ich Informationen dazu bekomme ? Über das Pdf Format direkt hab ich leider keine infos bekommen und im reference manual von Gtk wüsste ich nicht wo ich gucken soll..Freue mich über jedliche Antwort !
Mfg McMorf
-
kann man einen buffer z.B von einem Textview irgendwie drucken ? im reference manual von Gtk wüsste ich nicht wo ich gucken soll..
Eventuell bei Drucken, auf Englisch Printing? http://library.gnome.org/devel/gtk/unstable/Printing.html
Ich hab dir mal aus der Dokumentation ein kleines Beispielprogramm zusammengepastet:
#include <gtk/gtk.h> static void draw_page (GtkPrintOperation *operation, GtkPrintContext *context, int page_nr) { cairo_t *cr; PangoLayout *layout; PangoFontDescription *desc; cr = gtk_print_context_get_cairo_context (context); layout = gtk_print_context_create_pango_layout (context); pango_layout_set_text (layout, "brinnding", -1); desc = pango_font_description_from_string ("sans 28"); pango_layout_set_font_description (layout, desc); pango_font_description_free (desc); cairo_move_to (cr, 30, 20); pango_cairo_layout_path (cr, layout); cairo_set_source_rgb (cr, 0, 0.0, 1.0); cairo_fill (cr); g_object_unref (layout); } static void begin_print (GtkPrintOperation *operation, GtkPrintContext *context, gpointer user_data) { gtk_print_operation_set_n_pages (operation, 1); } static GtkPrintSettings *settings = NULL; static void do_print (GtkWindow *main_window) { GtkPrintOperation *print; GtkPrintOperationResult res; print = gtk_print_operation_new (); if (settings != NULL) gtk_print_operation_set_print_settings (print, settings); g_signal_connect (print, "begin-print", G_CALLBACK (begin_print), NULL); g_signal_connect (print, "draw-page", G_CALLBACK (draw_page), NULL); res = gtk_print_operation_run (print, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, GTK_WINDOW (main_window), NULL); if (res == GTK_PRINT_OPERATION_RESULT_APPLY) { if (settings != NULL) g_object_unref (settings); settings = g_object_ref (gtk_print_operation_get_print_settings (print)); } g_object_unref (print); } int main(int argc, char *argv[]) { GtkWidget *window; GtkWidget *button; gtk_init(&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "druckme"); g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); button = gtk_button_new_with_label ("print"); g_signal_connect_swapped (button, "clicked", G_CALLBACK (do_print), window); gtk_container_add (GTK_CONTAINER (window), button); gtk_widget_show_all (window); gtk_main (); return 0; }
Du siehst, im Printing Dialog kannst du auswählen, welchen Dateityp du willst. Das entsprechende interne Format generiert dir GTK+ schon selber, wenn du mit den Standardwerkzeugen arbeitest.
Mfg O'Brinnding
-
Hi !
Mittlerweile hab ichs im Reference Manual auch gefunden, aber leider nicht ganz verstanden.
Dein Beispiel wird mir sicherlich weiter helfen...
Super Herzlichen Dank, O'Brinnding !!!
Mfg McMorf
-
Hi !
das mit dem Drucken klappt schon mal wunderbar....
aber:
Du siehst, im Printing Dialog kannst du auswählen, welchen Dateityp du willst. Das entsprechende interne Format generiert dir GTK+ schon selber, wenn du mit den Standardwerkzeugen arbeitest.
wo kann ich das auswählen ?
ich habe nur die Möglichkeit z.B den Druckauftrag direkt in eine Datei umzuleiten...
wenn ich da *.pdf eingebe bekomme ich eine leere Datei.
benutze ich z.B freePDF funktioniert alles wunderbar...
aber genau das will ich ja vermeiden.Mfg McMorf