Per me la considero una fortuna che qualcun'altro possa esaminare il codice.
Serve a migliorarsi.
per quanto riguarda la "trasformazione" sono partito da qui:
const char *filename = g_strconcat(archivio_pdf_anno_corrente, "/fattura_", numero_fattura_text, NULL);
print_pdf = true;
GdkPixbuf *image_2;
GdkPixbuf *image_2_gs;
cairo_surface_t *surface;
cairo_t *cr1;
cairo_t *cr2;
int widht = 596 , height = 843;
surface = cairo_pdf_surface_create(filename, widht, height);
cairo_pdf_surface_restrict_to_version(surface, CAIRO_PDF_VERSION_1_5);
//cout<<"Surface..."<<cairo_status_to_string(cairo_surface_status(surface))<<endl;
cr1 = cairo_create(surface);
cr2 = cairo_create(surface);
//cout<<"Prima pagina "<<cairo_status_to_string(cairo_status(cr1))<<endl;
//cout<<"Seconda pagina "<<cairo_status_to_string(cairo_status(cr2))<<endl;
drawing_model_part_zero(cr1);
if (abbiamo_bollo) {
// l'immagine del bollo
image_2 = gdk_pixbuf_new_from_xpm_data((const char **)bollo_xpm);
gdk_cairo_set_source_pixbuf(cr1, image_2, 430, 8);
cairo_rectangle(cr1,430, 8, 134, 89);
cairo_fill(cr1);
g_object_unref(image_2);
};
drawing_model_part_one(cr1);
if (abbiamo_cliente) {
drawing_model_part_two(cr1);
};
cairo_show_page(cr1);
// seconda pagina
if (abbiamo_bollo) {
// l'immagine del bollo
image_2_gs = gdk_pixbuf_new_from_xpm_data((const char **)bollo_gs_xpm);
gdk_cairo_set_source_pixbuf(cr2, image_2_gs, 415, 8);
cairo_rectangle(cr2,415, 8, 171, 114);
cairo_fill(cr2);
g_object_unref(image_2_gs);
};
seconda_pagina = true;
drawing_model_part_zero(cr2);
drawing_model_part_one(cr2);
drawing_model_part_two(cr2);
cairo_show_page(cr2);
cairo_surface_destroy(surface);
cairo_destroy(cr1);
cairo_destroy(cr2);
seconda_pagina = false;
cout<<"Il file \""<<filename<<"\" è stato scritto correttamente"<<endl;
print_pdf = false;
C'è da dire che per le operazioni di disegno viene usato cairo e non paint.
un istruzione in cairo per dare un riferimento es.: cairo_move_to (cr,10,10)
qui verrebbe tradotta in : Paint.MoveTo(10,10)
perché l'oggetto in cui vai ad agire lo hai già impostato con Paint.Begin(oggetto_su_cui_disegnare)
Quindi anche modificando sub Es.: Disegna() con Disegna(obj AS Object)
e di conseguenza la chiamata diveniva Disegna(DrawingArea1) per la DwgArea
o Disegna(pdf) per il pdf appunto (Dim pdf As CairoPdfSurface)
Purtroppo non funzionano allo stesso modo!
ciao