硬件直接使用Qt打印而不使用QPrintDialog

时间:2012-05-17 12:35:48

标签: c++ linux file qt printing

我需要在点击按钮上硬件打印pdf文件(现有文件)。

就像已经识别并显示需要打印的文件,并且在单击打印按钮QPushButton时,应该将此pdf文件发送到打印机队列,而不会弹出打印对话框。

这可能与QPrinter或Qt中的任何其他设施有关吗? (平台是linux。)

2 个答案:

答案 0 :(得分:2)

一般来说,Qt(据我所知)没有内置的方法来做到这一点。您需要一个能够理解如何将PDF内容转换为(例如)后脚本以发送到打印机的程序。

快速谷歌搜索提出了一个名为“Poppler”的库,它可以将PDF内容渲染到QImage个实例上,然后就可以打印出来了。

也就是说,如果你将自己限制在Linux上,你可以创建一个QProcess并调用类似的东西:

lp document.pdf

答案 1 :(得分:2)

在Qt 5.2中,我能够使用这些函数来转换HTML - > WebView - >打印() 最初,我正在考虑直接打印PDF,但这确实起了作用。 (而且大部分代码都是从其他网站或论坛收集的)

void MainWindow::on_btnHtmltoWebView_clicked()
{
    QString html = ui->txtHtml->toPlainText();
    ui->webView->setHtml(html);
    ui->tabWidget->setCurrentIndex(3);
}

void MainWindow::on_btnPrintWebView_clicked()
{
    QPrinter p;
    p.setPaperSize(QPrinter::A4);
    p.setFullPage(false);
    p.setResolution(100);
    p.setFromTo(0,1);   //only print 1 page
    p.setOrientation(QPrinter::Portrait);
    QString printerName = QPrinterInfo::defaultPrinter().printerName();
    ui->webView->print(&p);
    showTrayMessage("Printing" ,"Output format: "+ QString::number(p.outputFormat()) +
                     QString("Printer state: ") + QString::number(p.printerState())
                    );
}