我正在尝试使用wkhtmltopdf C库将 html string 转换为pdf。我检查了与安装程序一起提供的示例,并成功编译并转换了页面。这是我用来参考的代码。
wkhtmltopdf_global_settings * gs;
wkhtmltopdf_object_settings * os;
wkhtmltopdf_converter * c;
wkhtmltopdf_init(false);
gs = wkhtmltopdf_create_global_settings();
wkhtmltopdf_set_global_setting(gs, "out", "test.pdf");
os = wkhtmltopdf_create_object_settings();
wkhtmltopdf_set_object_setting(os, "page", "https://www.google.com.ph");
c = wkhtmltopdf_create_converter(gs);
wkhtmltopdf_set_progress_changed_callback(c, progress_changed);
wkhtmltopdf_set_phase_changed_callback(c, phase_changed);
wkhtmltopdf_set_error_callback(c, error);
wkhtmltopdf_set_warning_callback(c, warning);
wkhtmltopdf_add_object(c, os, NULL);
if (!wkhtmltopdf_convert(c))
fprintf(stderr, "Convertion failed!");
printf("httpErrorCode: %d\n", wkhtmltopdf_http_error_code(c));
wkhtmltopdf_destroy_converter(c);
wkhtmltopdf_deinit();
我怀疑更改功能的参数
wkhtmltopdf_set_object_setting(os, "page", "https://www.google.com.ph");
类似
wkhtmltopdf_set_object_setting(os, [name of setting], [html string]);
将完成这项工作,但是文档没有为特定设置指定任何名称,除了样本中包含的名称" page"。
也许我在文档中错过了它,或者这可能不是正确的方法。任何建议都将非常感谢。
答案 0 :(得分:3)
void wkhtmltopdf_add_object(wkhtmltopdf_converter * converter,
wkhtmltopdf_object_settings * settings, const char * data)
您可以提供指向 UTF-8编码的 HTML字符串的非空data
参数,该字符串将转换为PDF而不是page
设置。
答案 1 :(得分:2)
感谢您抽出时间研究这个问题。我最终得到了解决方法。而不是字符串我传递了生成的html文件的本地路径。它不是我正在寻找的解决方案,但它做同样的事情。再次感谢。
答案 2 :(得分:1)
雅罗斯拉夫有正确的想法。
使用wkhtmltopdf_set_object_setting(os,“page”,data)函数,而不是代表网站URL的字符串,在HTML字符串前面加上数据URI。
例如:
const char *pszText = "data:text/html,<!DOCTYPE html><HTML><HEAD> .... </HTML>";
wkhtmltopdf_set_object_setting(os, "page", pszText);
像冠军一样工作。我甚至在div。 x 的页面中嵌入了小图像:在指定数据之前:image / png; base64作为内容网址。
答案 3 :(得分:0)
wkhtmltopdf_add_object(c, os, NULL);
您可以提供要转换的html的实际字符串数据,而不是传递NULL。 在对象设置中,您甚至无法设置“页面”属性。