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();
  • 相关阅读:
    企业身份识别系统 corporate Identity System
    初试C#中的应用程序+SQLServer编写
    组策略对软件使用的限制
    Ajax初试
    Web技术应用率报告
    领导者必须抵御的诱惑
    asp与网站安全的初步构想(1)——操作系统安全
    XP 的Bug?
    C#的多线程(2)——机制探索
    网站设计
  • 原文地址:https://www.cnblogs.com/LCCRNblog/p/4974152.html
Copyright © 2011-2022 走看看