zoukankan      html  css  js  c++  java
  • QT生成PDF文件

    QString temp="";
        //m_File_Content_Text_Edit->selectAll();
        QString t_File_Content = m_File_Content_Text_Edit->toPlainText();
    
    
    // pdf文件生成
        QPrinter printer;
        printer.setOutputFormat(QPrinter::PdfFormat);
        printer.setOutputFileName(filename);
        QPainter painter;
        if (! painter.begin(&printer))
        { // failed to open file
            QMessageBox::information(NULL, "提示", "PDF打开出错", QMessageBox::Yes, QMessageBox::Yes);
            return ;
        }
        int index = 0;
        int x=0;
        const int pageLine = 40;//PDF一页行数
       
    
        //我的PDF中做了表格,t_File_Content前五行是表头内容
        painter.setFont(QFont("Arial", 30));
        //painter.setPen(Qt::blue);
        painter.drawText(250,0,"组件接口检测报告");
        painter.setFont(QFont("Arial", 10));
        //painter.drawText(rect(), Qt::AlignCenter, "Qt");
        //QRectF biaoge(QPoint(100, 20), QSize(100, 100));
        //painter.drawRect(biaoge);
    
    
        //biaoge.setX();
        int biaotou_Count = 0;
        int y=40,size;
    
        for(index = 0;'' != t_File_Content[index];index++)
        {
    
            if('
    ' == t_File_Content[index])
            {
                if((y+120)>=1000 && temp != "")
                {
                    if (! printer.newPage())
                    { // failed to open file
                        QMessageBox::information(NULL, "提示", "PDF新建页数出错", QMessageBox::Yes, QMessageBox::Yes);
                        return ;
                    }
                    y = 20;
                }
                if("" == temp)
                {
                    temp == "";
                    continue;
                }
    
                if(biaotou_Count < 5)//当前是表头数据
                {
                    if(0 == biaotou_Count)
                    {
                        painter.setPen(Qt::blue);
                        painter.drawRect(QRectF(100,40,100,40));
                        painter.setPen(Qt::black);
                        painter.drawText(QRectF(100,40,100,40), Qt::AlignCenter, tr("检测组件"));
                        painter.setPen(Qt::blue);
                        painter.drawRect(QRectF(200,40,200,40));
                        painter.setPen(Qt::black);
                        painter.drawText(QRectF(200,40,200,40), Qt::AlignCenter, tr(temp.toStdString().c_str()));
                    }
                    else if(1 == biaotou_Count)
                    {
                        painter.setPen(Qt::blue);
                        painter.drawRect(QRectF(400,40,100,40));
                        painter.setPen(Qt::black);
                        painter.drawText(QRectF(400,40,100,40), Qt::AlignCenter, tr("检测日期"));
                        painter.setPen(Qt::blue);
                        painter.drawRect(QRectF(500,40,200,40));
                        painter.setPen(Qt::black);
                        painter.drawText(QRectF(500,40,200,40), Qt::AlignCenter, tr(temp.toStdString().c_str()));
                    }
                    else if(2 == biaotou_Count)
                    {
                        painter.setPen(Qt::blue);
                        painter.drawRect(QRectF(100,80,100,40));
                        painter.setPen(Qt::black);
                        painter.drawText(QRectF(100,80,100,40), Qt::AlignCenter, tr("版本号"));
                        painter.setPen(Qt::blue);
                        painter.drawRect(QRectF(200,80,200,40));
                        painter.setPen(Qt::black);
                        painter.drawText(QRectF(200,80,200,40), Qt::AlignCenter, tr(temp.toStdString().c_str()));
                    }
                    else if(3 == biaotou_Count)
                    {
                        painter.setPen(Qt::blue);
                        painter.drawRect(QRectF(400,80,100,40));
                        painter.setPen(Qt::black);
                        painter.drawText(QRectF(400,80,100,40), Qt::AlignCenter, tr("检测者"));
                        painter.setPen(Qt::blue);
                        painter.drawRect(QRectF(500,80,200,40));
                        painter.setPen(Qt::black);
                        painter.drawText(QRectF(500,80,200,40), Qt::AlignCenter, tr(temp.toStdString().c_str()));
                    }
                    else
                    {
                        painter.setPen(Qt::blue);
                        painter.drawRect(QRectF(100,120,100,40));
                        painter.setPen(Qt::black);
                        painter.drawText(QRectF(100,120,100,40), Qt::AlignCenter, tr("组件描述"));
                        painter.setPen(Qt::blue);
                        painter.drawRect(QRectF(200,120,500,40));
                        painter.setPen(Qt::black);
                        painter.drawText(QRectF(200,120,500,40), Qt::AlignCenter, tr(temp.toStdString().c_str()));
                        painter.setPen(Qt::blue);
                        painter.drawRect(QRectF(100,160,600,40));
                        painter.setPen(Qt::black);
                        painter.drawText(QRectF(100,160,600,40), Qt::AlignCenter, tr("检测结果"));
                        y=200;
                        x=200;
                    }
                    temp = "";
                    biaotou_Count++;
                    continue;
                }
    
                //painter.drawText(0,25*x,temp);//行间距,25个像素
                //x++;
                size = temp.size();
                if(temp[size-1] == '.')
                {
                    painter.setPen(Qt::blue);
                    painter.drawRect(QRectF(100,y,600,120));
                    painter.setPen(Qt::black);
                    if(isError(temp))
                        painter.setPen(Qt::red);
    
                    painter.drawText(QRectF(100,y,600,120), Qt::AlignCenter, tr(temp.toStdString().c_str()));
                    //painter.setPen(Qt::blue);
                    y+=120;
    
                    temp = "";
                    continue;
                }
                else
                {
                    temp +='
    ';
                }
            }
            else
            {
                temp += t_File_Content[index];
            }
    
        }
    
        painter.end();
  • 相关阅读:
    如何关闭微软反恶意软件客户端
    年轻爸爸家长会上猝死,事前已连续发烧三天
    人猝死前身体发出两个救命信号,一定要清楚,关键时刻救命
    火遍世界的视力恢复法 现在知道还不晚!
    重视工龄工资,食堂一定自己办
    VR行业纷纷倒闭:有硬件没内容
    企业为什么要去美国建厂
    bzoj 1046 : [HAOI2007]上升序列 dp
    bzoj 1857: [Scoi2010]传送带 三分
    bzoj 1045: [HAOI2008] 糖果传递
  • 原文地址:https://www.cnblogs.com/LCCRNblog/p/4974152.html
Copyright © 2011-2022 走看看