Fortunately you don't have to do it all by yourself. libzvbi provides export modules converting a vbi_page into the desired format or rendering directly into memory.
A minimalistic export example:
static void export_my_page (vbi_page *pg) { vbi_export *ex; char *errstr; if (!(ex = vbi_export_new ("html", &errstr))) { fprintf (stderr, "Cannot export as HTML: %s\n", errstr); free (errstr); return; } if (!vbi_export_file (ex, "my_page.html", pg)) puts (vbi_export_errstr (ex)); vbi_export_delete (ex); }
| typedef struct vbi_export vbi_export |
Export module instance, an opaque object.
Allocate with vbi_export_new().
| enum vbi_option_type |
| vbi_export_info* vbi_export_info_enum | ( | int | index | ) |
| index | Index into the export module list, 0 ... n. |
Some modules may depend on machine features or the presence of certain libraries, thus the list can vary from session to session.
NULL if the index is out of bounds. | vbi_export_info* vbi_export_info_keyword | ( | const char * | keyword | ) |
| keyword | Export module identifier as in vbi_export_info and vbi_export_new(). |
NULL if the named export module has not been found. | vbi_export_info* vbi_export_info_export | ( | vbi_export * | export | ) |
| export | Pointer to a vbi_export object previously allocated with vbi_export_new(). |
NULL if export is NULL. | vbi_export* vbi_export_new | ( | const char * | keyword, | |
| char ** | errstr | |||
| ) |
| keyword | Export module identifier as in vbi_export_info. | |
| errstr | If not NULL this function stores a pointer to an error description here. You must free() this string when no longer needed. |
| keyword | like this: |
vbi_export_new ("keyword; quality=75.5, comment=\"example text\"");
NULL is returned and the errstr may be set (else NULL) if some problem occurred. | void vbi_export_delete | ( | vbi_export * | export | ) |
| export | Pointer to a vbi_export object previously allocated with vbi_export_new(). Can be NULL. |
| vbi_option_info* vbi_export_option_info_enum | ( | vbi_export * | export, | |
| int | index | |||
| ) |
| export | Pointer to a initialized vbi_export object. | |
| index | Index in the option table 0 ... n. |
NULL if index is out of bounds. | vbi_option_info* vbi_export_option_info_keyword | ( | vbi_export * | export, | |
| const char * | keyword | |||
| ) |
| export | Pointer to a initialized vbi_export object. | |
| keyword | Keyword of the option as in vbi_option_info. |
NULL if the keyword wasn't found. | vbi_bool vbi_export_option_set | ( | vbi_export * | export, | |
| const char * | keyword, | |||
| ... | ||||
| ) |
| export | Pointer to a initialized vbi_export object. | |
| keyword | Keyword identifying the option, as in vbi_option_info. | |
| ... | New value to set. |
Typical usage of vbi_export_option_set():
vbi_export_option_set (export, "quality", 75.5);
Mind that options of type VBI_OPTION_MENU must be set by menu entry number (int), all other options by value. If necessary it will be replaced by the closest value possible. Use function vbi_export_option_menu_set() to set options with menu by menu entry.
TRUE on success, otherwise the option is not changed. | vbi_bool vbi_export_option_get | ( | vbi_export * | export, | |
| const char * | keyword, | |||
| vbi_option_value * | value | |||
| ) |
| export | Pointer to a initialized vbi_export object. | |
| keyword | Keyword identifying the option, as in vbi_option_info. | |
| value | A place to store the current option value. |
TRUE on success, otherwise value unchanged. | vbi_bool vbi_export_option_menu_set | ( | vbi_export * | export, | |
| const char * | keyword, | |||
| int | entry | |||
| ) |
| export | Pointer to a initialized vbi_export object. | |
| keyword | Keyword identifying the option, as in vbi_option_info. | |
| entry | Menu entry to be selected. |
TRUE on success, otherwise the option is not changed. | vbi_bool vbi_export_option_menu_get | ( | vbi_export * | export, | |
| const char * | keyword, | |||
| int * | entry | |||
| ) |
| export | Pointer to a initialized vbi_export object. | |
| keyword | Keyword identifying the option, as in vbi_option_info. | |
| entry | A place to store the current menu entry. |
TRUE on success, otherwise value remained unchanged. | vbi_bool vbi_export_stdio | ( | vbi_export * | export, | |
| FILE * | fp, | |||
| vbi_page * | pg | |||
| ) |
| export | Pointer to a initialized vbi_export object. | |
| fp | Buffered i/o stream to write to. | |
| pg | Page to be exported. |
You can call this function as many times as you want, it does not change vbi_export state or the vbi_page.
TRUE on success. | vbi_bool vbi_export_file | ( | vbi_export * | export, | |
| const char * | name, | |||
| vbi_page * | pg | |||
| ) |
| export | Pointer to a initialized vbi_export object. | |
| name | File to be created. | |
| pg | Page to be exported. |
You can call this function as many times as you want, it does not change vbi_export state or the vbi_page.
TRUE on success. | char* vbi_export_errstr | ( | vbi_export * | export | ) |
| export | Pointer to a initialized vbi_export object. |
1.5.2