zoukankan      html  css  js  c++  java
  • Qt 分页标题打印

    void ItemSplitter::printpdf(const QString& fileName){
    
        QPrinter printer_html(QPrinter::ScreenResolution);
        printer_html.setPageSize(QPrinter::A4);
        printer_html.setOutputFormat(QPrinter::PdfFormat);
        printer_html.setOutputFileName(fileName);
        QPainter painter( &printer_html );
    
        QSizeF pageSize(printer_html.pageRect().width(),printer_html.pageRect().height());
    
        TreeItem * treeItem = rootItem;
        QString logo = ("");
        QString date = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
    
        QString htmltable[2],htmlbody[2],htmlfront[2],htmltext;
    
        htmlbody[0] +="<html>";
        htmlbody[0] +="<body>";
        htmlbody[1] +="</body>";
        htmlbody[1] +="</html>";
    
        htmltable[0] +="<div><table width="85%" align="center">";
        htmltable[1] +="</table></div>";
    
        htmlfront[0] +=htmltable[0];
        htmlfront[0] +="<tr><td><h1>"+QString("Parameter Report") + "</h1></td><td align="right"><h1>"+ logo +"</h1></td> </tr>";
        htmlfront[0] +="<tr><td><h3>"+ date + "     Page ";
        htmlfront[1] +="</h3></td><td align="right" ><img src = "logoprint.png"></td></tr>";
        htmlfront[1] +="<tr><td colspan = "2"><hr/></td></tr>";
        htmlfront[1] +=htmltable[1];
    
        int pagenum = 0;
        int counter = 0 ;
        htmltext.clear();
        htmltext+=htmlfront[0];
        htmltext+=QString::number(++pagenum);
        htmltext+=htmlfront[1];
        htmltext += htmlbody[0];
        htmltext += htmltable[0];
        for( int i = 0 ; i < treeItem->childCount() ; ++i)
        {
             TreeItem* it1 = treeItem->child(i);
             htmltext +="<tr>";
             htmltext += "<td colspan = "4">";
             htmltext += "<strong>";
             htmltext+= "Collumn " + it1->data(E_COORDINATE).toString();
             htmltext+= ": " + it1->data(E_NAME).toString();
             htmltext += "</strong>";
             htmltext += "</td>";
             htmltext +="</tr>";
             counter += 3;
             for( int i = 0 ; i < it1->childCount() ; ++i ,++counter)
             {
                  TreeItem* it2 = it1->child(i);
                  htmltext +="<tr>";
                  htmltext +="<td>";
                  htmltext+= it2->data(E_COORDINATE).toString();
                  htmltext +="</td>";
    
                  htmltext +="<td>";
                  htmltext+= it2->data(E_NAME).toString();
                  htmltext +="</td>";
    
                  htmltext +="<td>";
                  htmltext+= it2->data(E_VALUE).toString();
                  htmltext +="</td>";
    
                  htmltext +="<td align="right">";
                  htmltext+= it2->data(E_UNIT).toString();
                  htmltext +="</td>";
                  htmltext +="</tr>";
             }
             htmltext +="<tr>";
             htmltext += "<td colspan = "4">";
             htmltext += "</td>";
             htmltext +="</tr>";
             int nextcount;
             if(i + 1 < treeItem->childCount()){
                it1 = treeItem->child(i + 1);
                nextcount = it1->childCount();
             }
             else
             {
                nextcount = 0;
             }
             if(counter + nextcount + 3 > 65 )
             {
                counter = 0 ;
                htmltext+=htmltable[1];
             // htmltext+="<div style="page-break-after:auto !important;"></div>";
                QTextDocument text_document;
                text_document.setHtml(htmltext);
                text_document.setPageSize(pageSize);
                text_document.drawContents(&painter);
                printer_html.newPage();
                htmltext.clear();
                htmltext+=htmlfront[0];
                htmltext+=QString::number(++pagenum);
                htmltext+=htmlfront[1];
                htmltext +=htmltable[0];
            }
        }
       // qDebug() << html;
        if( counter > 0 )
        {
             htmltext += htmlbody[1];
             QTextDocument text_document;
             text_document.setHtml(htmltext);
             text_document.setPageSize(pageSize);
             text_document.drawContents(&painter);
             qDebug() <<" page count:" << text_document.pageCount();
        }
    
    }
  • 相关阅读:
    星巴克——最单纯的SNS应用
    用地图说话:在商业分析与演示中运用Excel数据地图(全彩)
    Ext江湖
    两个概念模型及算法之间的关系
    PageRank 算法
    闭包用法:经典案例
    SNS营销——网商成功之道
    这就是搜索引擎:核心技术详解
    制作自己的数据地图
    认识数据地图
  • 原文地址:https://www.cnblogs.com/xuyouzhu/p/10071678.html
Copyright © 2011-2022 走看看