Linux系统下QT实现打印功能,遇到2个问题,请大家帮忙看看,谢谢!
1、linux系统下面执行以下代码,只能获取到实际的打印机,而获取不到PDF等虚拟打印机;windows系统下实际打印机和虚拟打印机都可以获取到;
QList< QPrinterInfo > printList=QPrinterInfo::availablePrinters();
for(int i=0;i<printList.size();i++)
{
ui->comboBox_PrintList->addItem(printList.at(i).printerName());
qDebug()<<printList.at(i).printerName()<<"\n\t";
}
2、linux系统下,用以下代码实现对当前屏幕截屏,并将所得图片进行打印,发现如果选pdf虚拟打印机可以正常打印,但是如果选一个实际的打印机却打不出来,而且没有任何异常提示;windows系统下不存在这样的问题
//拷屏
QPixmap pic=QPixmap::grabWindow(QApplication::desktop()->winId());
bool bOK= pic.save("D:/hyz/pic.JPG","JPG");
if(!bOK)
{
qDebug()<<"ScreenShot Faild!";
}
QImage *screenImage=new QImage("D:/hyz/pic.JPG");
//打印图片
QPrinter printer;
QPrintDialog printDialog(&printer,this);
if (printDialog.exec() == QDialog::Accepted) {
printer.setOrientation(QPrinter:andscape );
QPainter painter(&printer);
QRect rect = painter.viewport();
QSize size = screenImage->size();
size.scale(rect.size(), Qt::KeepAspectRatio);
painter.setViewport(rect.x(), rect.y(),size.width(), size.height());
painter.setWindow(screenImage->rect());
painter.drawImage(0, 0, *screenImage);
qDebug()<<"ScreenShot Sucessed!";
}