国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > HTML > 正文

QT如何實現調用打印機來打印html中的網頁及文件

2020-03-24 16:41:21
字體:
來源:轉載
供稿:網友

這篇文章介紹的內容是QT如何實現調用打印機來打印html中的網頁及文件,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

工程里用到 QWebView,

所以要在.pro里加上 QT += webkit webkitwidgets
打印用到了 QPrinter,
所以要在.pro里加上 qtHaveModule(printsupport): QT += printsupport

直接附上源碼吧,當然也是根據網上一些前輩的經驗代碼和實際使用情況改進而來:

#ifndef WIDGET_H#define WIDGET_H#include QWidget #include QTableWidget #include QPainter #include QtPrintSupport/QPrinter #include QtPrintSupport/QPrintDialog #include QFileInfo #include windows.h #include QFileDialog #include QtPrintSupport/QPrintPreviewDialog #include QtPrintSupport/QPageSetupDialog #include fstream #include iostream #include sstream #include QWebView namespace Ui {class Widget;class Widget : public QWidget Q_OBJECTpublic:  explicit Widget(QWidget *parent = 0); ~Widget();private slots: void on_pushButton_clicked();  void printPreview(QPrinter *printer);private: Ui::Widget *ui;  void doPrint();  void doPrintPreview();  void createPdf();  void setUpPage();  bool printFile(const QString filePath);};

實現:

#include Widget.h #include ui_Widget.h Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) ui- setupUi(this); //這里沒用QFile文件讀html文件,因為會使html網頁中文成亂碼 QString strHtmltext;  std::string bufStr;  std::ifstream readFile; readFile.open( D://qqq.html  if(readFile.is_open()) while(getline(readFile, bufStr)) strHtmltext += QString(bufStr.data()); readFile.close(); ui- webView- setHtml(strHtmltext);Widget::~Widget(){ delete ui;}//點擊這里觸發打印動作!void Widget::on_pushButton_clicked() doPrint();// doPrintPreview();// printFile( D:/123.txt void Widget::doPrint() // 創建打印機對象 QPrinter printer;  // 創建打印對話框 QString printerName = printer.printerName();  if( printerName.size() == 0)  return; QPrintDialog dlg( printer, this);#if 0 //如果編輯器中有選中區域,則打印選中區域 if (ui- textEdit- textCursor().hasSelection()) dlg.addEnabledOption(QAbstractPrintDialog::PrintSelection);#endif // 如果在對話框中按下了打印按鈕,則執行打印操作// if (dlg.exec() == QDialog::Accepted) //這里使用默認打印機,不用每次選擇打印機// ui- textEdit- print( printer); ui- webView- print( printer);  // print the existing document by absoult path // printFile( D:/myRSM.doc // 打印預覽void Widget::doPrintPreview() QPrinter printer;  // 創建打印預覽對話框 QPrintPreviewDialog preview( printer, this);  // 當要生成預覽頁面時,發射paintRequested()信號 connect( preview, SIGNAL(paintRequested(QPrinter*)),this,SLOT(printPreview(QPrinter*))); preview.exec();void Widget::printPreview(QPrinter *printer)// ui- textEdit- print(printer); ui- webView- print(printer);// 生成PDF文件void Widget::createPdf() QString fileName = QFileDialog::getSaveFileName(this, tr( 導出PDF文件 ), QString(), *.pdf  if (!fileName.isEmpty()) {  // 如果文件后綴為空,則默認使用.pdf if (QFileInfo(fileName).suffix().isEmpty()) fileName.append( .pdf  QPrinter printer;  // 指定輸出格式為pdf printer.setOutputFormat(QPrinter::PdfFormat); printer.setOutputFileName(fileName);// ui- textEdit- print( printer); ui- webView- print( printer);// 頁面設置void Widget::setUpPage() QPrinter printer; QPageSetupDialog pageSetUpdlg( printer, this);  if (pageSetUpdlg.exec() == QDialog::Accepted) printer.setOrientation(QPrinter::Landscape); else printer.setOrientation(QPrinter::Portrait);bool Widget::printFile(const QString filePath) // create a printer QPrinter printer; QString printerName = printer.printerName();  // no default printer or no file return false if( printerName.size() == 0 || filePath.size() == 0)  return false; QFileInfo fi(filePath);  if(!fi.exists())  return false;  int ret = 0;  //執行DOS命令調系統打印 ret = (int)ShellExecuteW(NULL, QString( print ).toStdWString().c_str(), filePath.toStdWString().c_str(), NULL, NULL, SW_HIDE);  // if return number bigger than 31 indicate succ if (ret SE_ERR_NOASSOC)  return true;  return false;}


相關推薦:

JS調用打印機打印Web頁面

HTML網頁打印

web打印實現幾種方法

使用JavaScript實現頁面打印

以上就是QT如何實現調用打印機來打印html中的網頁及文件的詳細內容,html教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 花莲市| 克东县| 泰顺县| 民丰县| 凌云县| 原阳县| 丰台区| 通化县| 抚顺县| 密云县| 江津市| 高台县| 北安市| 平定县| 九江县| 富锦市| 江达县| 罗田县| 涞水县| 贵南县| 定陶县| 新和县| 丰台区| 遂川县| 墨脱县| 托里县| 新平| 昌宁县| 宜君县| 日喀则市| 车险| 黔南| 会泽县| 张家港市| 姜堰市| 宁乡县| 四会市| 石门县| 宁津县| 卫辉市| 西乌|