Генерирование PDF в программном обеспечении GTK - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь сгенерировать 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.

...