Я пытаюсь сгенерировать PDF, используя файл HTML в программном обеспечении GTK. Таким образом, работающее программное обеспечение порождает процесс, который создает PDF с помощью g_spawn_command_line_sync () и ожидает завершения создания PDF.
Я использую wkhtmltopdf для преобразования HTML-файла в PDF. Ниже мой подход.
// Creating the HTML file
FILE * pFile;
pFile = fopen("/home/user_name/savelog.html","w");
system("sudo chown -R user_name /home/user_name/savelog.html");
char write_to_file[800];
// Writing to HTML file which will then be converted to the PDF file
sprintf(write_to_file,"<HTML> <p> <b> <font size= \"13\"> %s </font> </b> <br/> <br/> <b> OUTPUT 1 </b> <br/> No of Loops: %d <br/> Average Loop Time: %f secs <br/> Read Max : %f <br/> Read Min : %f <br/> Min Time : %f secs <br/> Max Time: %f secs <br/> <br/> <b> OUTPUT 2 </b> <br/> No of Loops: %d <br/> Average Loop Time: %f secs <br/> Read Max : %f <br/> Read Min : %f <br/> Min Time : %f secs <br/> Max Time: %f secs <br/> </p> </HTML>",date_time,no_of_loops_output1,avg_loop_time_output1,data_to_file[0],data_to_file[1],min_output1,max_output1,loop_variable,avg_loop_time_output2,data_to_file[3],data_to_file[4],min_output2,max_output2);
if(pFile!=NULL)
{
fprintf(pFile,write_to_file);
close(pFile);
}
// Converting the HTML file to the PDF file
sprintf(command,"sudo -u user_name wkhtmltopdf savelog.html test.pdf");
gint gi;
gchar* standard_output;
gchar* standard_error;
GError* err = NULL;
// Making this process wait until the "command" exexution gets completed
g_spawn_command_line_sync
(
command,
&standard_output,
&standard_error,
&gi,
&err
);
if (err)
{
fprintf(stderr, "error: %s\n", err->message);
}
Файл создается, но содержимое файла пустое.
Когда я запускаю команду из терминала, используя тот же HTML-файл, генерируемый PDF-файл является точным.
Итак, я пытаюсь выяснить, где проблема, которая приводит к созданию пустого файла. Это касается моей реализации g_spawn_command_line_sync () или использования wkhtmltopdf.