a cairo_write_func_t to accept the output data, may be NULL to indicate a no-op write_func. With a no-op write_func, the surface may be queried or used as a source without generating any temporary files.
the closure argument for write_func
width of the surface, in points (1 point == 1/72.0 inch)
height of the surface, in points (1 point == 1/72.0 inch)
a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done with it. This function always returns a valid pointer, but it will return a pointer to a "nil" surface if an error such as out of memory occurs. You can use cairo_surface_status() to check for this.
Creates a PDF surface of the specified size in points to be written incrementally to the stream represented by write_func and closure. Since 1.2