我需要在单击按钮时硬件打印一个 pdf 文件(已经存在的文件)。
就像需要打印的文件已经被识别并存在,并且单击打印按钮后,QPushButton
该 pdf 文件应该被发送到打印机队列,而不会弹出打印对话框。
QPrinter 或 Qt 中的任何其他工具可以做到这一点吗?(平台是linux。)
一般来说,Qt(据我所知)没有内置的方法来做到这一点。您需要一个了解如何将 PDF 内容转换为(例如)后置脚本以发送到打印机的程序。
Google 快速搜索了一个名为“ Poppler ”的库,它可以将 PDF 内容渲染到QImage
实例上,然后您可以打印这些内容。
也就是说,如果你将自己限制在 linux 上,你可以创建一个QProcess
并调用类似的东西:
lp document.pdf
在 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())
);
}