2016-01-28 3 views
0

Есть ли способ узнать, печатает ли Fl_Printer файл (файл .ps)? Мое приложение должно знать, был ли пользователь выбран для печати в файл, поэтому он может добавить некоторые дополнительные материалы на печатную страницу. Я просмотрел документацию Fl_Printer и все ее наследие, но безрезультатно. Возможно ли это с текущим API? Мое приложение использует FLTK 1.3.3 и построен для Linux и OS X.Как проверить, печатается ли файл

Редактировать

#include <FL/Fl_Printer.H> 
... 
void SWindow::on_print() 
{ 
    Fl_Printer printer; 
    if(printer.start_job(1)) return; 
    if(printer.start_page()) return; 
    // Drawing takes place here 
    printer.end_page(); 
    printer.end_job(); 
} 
+0

Так, если пользователь печатает на принтере, они получают одну много информации. Если они печатаются в файл и затем распечатывают этот файл, они получают дополнительную информацию? Вы попросите пользователей спросить, почему у них нет дополнительной информации. Почему бы просто не добавить дополнительную информацию, независимо от того, как она печатается? – cup

+0

Разница между печатью на бумаге или файлом не важна здесь. Именно так хочет клиент, и у них есть веские причины для этого. Ключевая техническая проблема заключается в том, чтобы определить, был ли пользователь выбран для печати в файл. Я возьму его оттуда. –

+0

Можете ли вы опубликовать свой звонок FL_Printer/FL_Postscript. Я просто хочу посмотреть, как вы это называете. Вы можете получить версию, которая знает, для чего она печатает. – cup

ответ

0

Это не совсем элегантный метод, но он будет работать.

  1. Изменить Fl_Printer.H. В классе Fl_Printer, изменить личное сообщение
  2. Изменить Fl_PostScript.H. В классе Fl_PostScript_File_Device, изменение защищено public
  3. Нет необходимости перестраивать библиотеки, поскольку заголовки влияют только на компиляцию. Вы можете изменять заголовки, не меняя библиотеки.

В коде

if (printer.printer->driver()->ps_filename_ == NULL) 
{ 
    // printing to printer 
} 
else 
{ 
    // printing to file 
} 
+0

Спасибо чашке, это хорошее наблюдение, и я согласен с вами в том, что вы не очень элегантный, но он выполняет свою работу. Это один из тех случаев, когда вы хотите, чтобы члены данных базового класса не были частными. Если бы они были защищены, я мог бы вывести новый класс из Fl_Printer и предоставить дополнительные функции. –

+0

Я почти не пользуюсь частным: почти всегда пользуюсь защитой, если мне нужно написать интроспективный класс для отладки. – cup