硬件直接打印使用Qt不使用QPrintDialog中(Hardware Print directly

2019-09-17 07:18发布

我需要点击一个按钮,以硬件打印PDF文件(已存在的文件)。

这就像需要打印的文件已经确定并存在并在点击打印按钮QPushButton本PDF文件应该没有弹出一个对话框prinitng发送到打印机队列。

这可能与QPrinter来或Qt的任何其他设备? (平台是Linux)。

Answer 1:

在一般情况下,Qt拥有(据我所知)没有内置的方式做到这一点。 你需要了解如何PDF内容转换成(例如)后脚本转换为发送到打印机的程序。

快速谷歌搜索想出了一个名为“库poppler的 ”,能显示PDF内容上,比如说, QImage实例,然后你可以打印这些。

这就是说,如果你限制你自己到Linux,你可以只创建一个QProcess并调用是这样的:

lp document.pdf


Answer 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())
                    );
}


文章来源: Hardware Print directly using Qt without using QPrintDialog