распечатать pdf-файл через принтер в qt

я новый программист C++ QT, я хочу распечатать несколько файлов PDF через свое принтерное устройство (или сетевой принтер), я искал и нашел это руководство: Qt обрабатывает файл PDF, но я не могу скомпилировать MuPDF и Poppler и использовать эти сторонние библиотеки в своем приложении. Мой файл PDF тоже зашифрован и должен печатать файл из памяти. способ распечатать файл PDF через мое принтерное устройство?


person heshmat askari    schedule 25.10.2014    source источник
comment
Запрещено ли использовать сторонние программы? Вы можете вызвать ghostscript, который понимает PDF и поддерживает множество языков вывода.   -  person Oncaphillis    schedule 25.10.2014
comment
да, мой босс запретил мне использовать третью библиотеку, могу ли я распечатать файл ghostscript напрямую через принтер? могу ли я легко преобразовать свой файл pdf в файл ghostscript?   -  person heshmat askari    schedule 25.10.2014
comment
платформа Windows (Windows XP, 7)   -  person heshmat askari    schedule 25.10.2014
comment
С помощью ghostscript вам все равно придется выяснять, какой тип принтера обслуживать. Я думаю, что самым простым подходом было бы вызвать Acrobat Reader, см. здесь, особенно / т вариант.   -  person Oncaphillis    schedule 25.10.2014
comment
на самом деле мой pdf-файл зашифрован и не должен сохраняться в pdf-файле на диске, по этой причине я не могу использовать командную строку Acrobat Reader.   -  person heshmat askari    schedule 25.10.2014
comment
как я могу использовать ghostscript в QT?   -  person heshmat askari    schedule 25.10.2014
comment
Что ж, если вам не разрешено сохранять на диск, я думаю, что ghostscript вам тоже не поможет. Часть с шифрованием на самом деле весьма существенна. Ghostscript будет просто переводчиком PDF, который генерирует вывод для конкретного принтера, который вы можете просто скопировать на принтер по вашему выбору.   -  person Oncaphillis    schedule 25.10.2014
comment
Итак, что я могу сделать? Любая идея?   -  person heshmat askari    schedule 25.10.2014
comment
не знаю, возможно ли передать поток PDF в Acrobat Reader из вашего приложения.   -  person Oncaphillis    schedule 25.10.2014


Ответы (1)


Здравствуйте, вы можете использовать что-то вроде этого.

QPrinter printer(QPrinter::HighResolution);
printer.setOrientation(QPrinter::Portrait);
QPrintDialog dlg(&printer, this);
dlg.setWindowTitle("Print");

if (dlg.exec() == QDialog::Accepted)
{
    QWidget* widget = new QWidget(his); // this widget is your pdf widget
    QPixmap printPixmap(widget->width(),widget->height());
    widget->render(&printPixmap,QPoint(),QRegion(0,0,widget->width(),widget->height()));
    QPainter painterPixmap(&printer);
    painterPixmap.scale(4,4);
    painterPixmap.drawPixmap(printer.pageRect().topLeft(), printPixmap, printPixmap.rect());
}
person Burak Hamuryen    schedule 25.10.2014
comment
я хочу отправить pdf-файл на принтер (например, сетевой принтер), я не хочу печатать свой виджет, - person heshmat askari; 25.10.2014
comment
Хорошо, если вы можете отобразить файл на виджете, вы можете распечатать его так. - person Burak Hamuryen; 25.10.2014
comment
я не могу использовать mupdf и poppler для рендеринга pdf (на самом деле я не могу скомпилировать эту библиотеку для qt5), любая библиотека рендеринга или способ существуют ?? - person heshmat askari; 26.10.2014