我需要在点击按钮上硬件打印pdf文件(现有文件)。
就像已经识别并显示需要打印的文件,并且在单击打印按钮QPushButton
时,应该将此pdf文件发送到打印机队列,而不会弹出打印对话框。
这可能与QPrinter或Qt中的任何其他设施有关吗? (平台是linux。)
答案 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())
);
}