Skip to content

Instantly share code, notes, and snippets.

@sciguy16
Last active June 11, 2020 19:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sciguy16/e2383a8a9b6ece5356af209e981c8323 to your computer and use it in GitHub Desktop.
Save sciguy16/e2383a8a9b6ece5356af209e981c8323 to your computer and use it in GitHub Desktop.
Demonstration code for bug report https://github.com/wkhtmltopdf/wkhtmltopdf/issues/4714
#include <stdio.h>
#include <stdbool.h>
#include "image.h"
void finished(wkhtmltoimage_converter * converter, int p) {
printf("Finished: %d\n", p);
}
void progress_changed(wkhtmltoimage_converter * converter, int p) {
printf("%3d\n", p);
}
void phase_changed(wkhtmltoimage_converter * converter) {
int phase = wkhtmltoimage_current_phase(converter);
printf("Phase: %s\n", wkhtmltoimage_phase_description(converter, phase));
}
void error(wkhtmltoimage_converter * converter, const char * msg) {
printf("Error: %s\n", msg);
}
void warning(wkhtmltoimage_converter * converter, const char * msg) {
printf("Warning: %s\n", msg);
}
int main(void){
wkhtmltoimage_global_settings * gs;
wkhtmltoimage_converter * converter;
// Init wkhtmltoimage in graphics-less mode
if(wkhtmltoimage_init(false) != 1) {
return printf("Init failed");
}
gs = wkhtmltoimage_create_global_settings();
int ret;
ret = wkhtmltoimage_set_global_setting(gs, "in", "https://rust-lang.org/en-US/");
printf("in: %d\n", ret);
ret = wkhtmltoimage_set_global_setting(gs, "fmt", "png");
printf("fmt: %d\n", ret);
ret = wkhtmltoimage_set_global_setting(gs, "screenWidth", "1280");
printf("screenWidth: %d\n", ret);
ret = wkhtmltoimage_set_global_setting(gs, "crop.width", "800");
printf("crop.width: %d\n", ret);
ret = wkhtmltoimage_set_global_setting(gs, "crop.height", "800");
printf("crop.height: %d\n", ret);
ret = wkhtmltoimage_set_global_setting(gs, "crop.top", "80");
printf("crop.top: %d\n", ret);
ret = wkhtmltoimage_set_global_setting(gs, "crop.left", "80");
printf("crop.left: %d\n", ret);
converter = wkhtmltoimage_create_converter(gs, NULL);
// Setup callbacks
wkhtmltoimage_set_finished_callback(converter, finished);
wkhtmltoimage_set_progress_changed_callback(converter, progress_changed);
wkhtmltoimage_set_phase_changed_callback(converter, phase_changed);
wkhtmltoimage_set_error_callback(converter, error);
wkhtmltoimage_set_warning_callback(converter, warning);
// Perform the conversion
if (!wkhtmltoimage_convert(converter)) {
printf("Conversion failed!");
} else {
const unsigned char *data = NULL;
printf("Calling wkhtmltoimage_get_output\n");
unsigned long len = wkhtmltoimage_get_output(converter, &data);
printf("Received %lu bytes.\n", len);
}
wkhtmltoimage_destroy_converter(converter);
wkhtmltoimage_deinit();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment