Vale, os dejo este codigo C , que he escrito, para crear un file PDF, insertando dos (o más) imagenes de archivos PNG:

#include <cairo/cairo.h>
#include <cairo/cairo-pdf.h>


int main() {

int w, h;
cairo_surface_t *surface, * immago1, * immago2;
cairo_t *cr;


immago1 = cairo_image_surface_create_from_png ("/ruta/primero/archivo.png");
immago2 = cairo_image_surface_create_from_png ("/ruta/del/segundo/archivo.png");

/* Hoja PDF A4 */
surface = cairo_pdf_surface_create("/ruta/del/futuro/archivo.pdf", 2480, 3508);

cr = cairo_create(surface);

/* Ensertamo la primera imagen */
cairo_scale(cr, 1, 1);
cairo_set_source_surface (cr,immago1, 0, 0);
cairo_paint (cr);

/* Ensertamo la secunda imagen */
cairo_scale(cr, 1, 1);
cairo_set_source_surface (cr,immago2, 300, 0);
cairo_paint (cr);

/* El archivo PDF serà creado, destruyendo el elemento/superficie de dibujo CAIRO */
cairo_destroy(cr);
cairo_surface_destroy(surface);

return 0;

}


Este codigo fuente serà compilado en Terminal con:
~ $ gcc -o /ruta/del/nombre_applicacion /ruta/del/codigo_fuente.c -lcairo