0

我需要在单击按钮时硬件打印一个 pdf 文件(已经存在的文件)。

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

QPrinter 或 Qt 中的任何其他工具可以做到这一点吗?(平台是linux。)

4

2 回答 2

2

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

Google 快速搜索了一个名为“ Poppler ”的库,它可以将 PDF 内容渲染到QImage实例上,然后您可以打印这些内容。

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

lp document.pdf
于 2012-05-17T13:03:22.210 回答
2

在 Qt 5.2 中,我能够使用这些函数来转换 HTML -> WebView -> Print() 本来,我想直接打印 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())
                    );
}
于 2014-02-22T14:08:27.703 回答