я новый программист C++ QT, я хочу распечатать несколько файлов PDF через свое принтерное устройство (или сетевой принтер), я искал и нашел это руководство: Qt обрабатывает файл PDF, но я не могу скомпилировать MuPDF и Poppler и использовать эти сторонние библиотеки в своем приложении. Мой файл PDF тоже зашифрован и должен печатать файл из памяти. способ распечатать файл PDF через мое принтерное устройство?
распечатать pdf-файл через принтер в qt
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
я хочу отправить pdf-файл на принтер (например, сетевой принтер), я не хочу печатать свой виджет,
- person heshmat askari; 25.10.2014
Хорошо, если вы можете отобразить файл на виджете, вы можете распечатать его так.
- person Burak Hamuryen; 25.10.2014
я не могу использовать mupdf и poppler для рендеринга pdf (на самом деле я не могу скомпилировать эту библиотеку для qt5), любая библиотека рендеринга или способ существуют ??
- person heshmat askari; 26.10.2014