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;‘\0‘ != t_File_Content[index];index++)
    {

        if(‘\n‘ == 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 +=‘\n‘;
            }
        }
        else
        {
            temp += t_File_Content[index];
        }

    }

    painter.end();
时间: 2024-10-01 01:58:18

QT生成PDF文件的相关文章

thinkphp整合系列之tcpdf类生成pdf文件

php生成pdf文件的需求是不怎么常见的:当然也是有的: 既然已经整合使用了:那就写篇博客来讲解下吧: 示例项目:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin 一:引入tcpdf /ThinkPHP/Library/Vendor/Tcpdf 把tcpdf整个目录拷到自己的项目中: 二:函数 /Application/Common/Common/function.php /** * 生成pdf * @param  string $html

.NET生成PDF文件

C#未借助第三方组件,自己封装通用类,生成PDF文件. 调用方式: //路径 string path = @"C:\yuannwu22.pdf"; //内容 string strContent = "ddd3232342434d"; new PDFGenerator.PDFGenerator(path, strContent).Create(); 下载地址: http://pan.baidu.com/s/1kTIchev?

ThinkPHP3.2.3扩展之生成PDF文件(MPDF)

目前是PHP生成PDF文件最好的插件了,今天介绍下在ThinkPHP3.2.3里如何使用. 先安照路径放好如图. 下面是使用方法 public function pdf(){ //引入类库 Vendor('mpdf.mpdf'); //设置中文编码 $mpdf=new \mPDF('zh-cn','A4', 0, '宋体', 0, 0); //html内容 $html='<h1><a name="top"></a>一个PDF文件</h1>

MFC使用Haru free pdf lib生成pdf文件

MFC使用Haru free pdf lib生成pdf文件 我们先创建一个项目MFCPDFDemo,在上面添加一个编辑框和一个按钮: haru free pdf类库下载地址 这里直接下载dll,如果想以静态库的方式使用,得下载源码自己编译.然后把这个dll添加到项目中,怎么添加就不说了吧,还是说一下吧,万一有新手看不懂呢.解压后我们要用到三个东西:libhpdf.dlllibhpdf.libinclude整个文件夹解压后复制libhpdf.dll到项目的release和debug目录下:libh

怎么用PHP在HTML中生成PDF文件

原文:Generate PDF from html using PHP 译文:使用PHP在html中生成PDF 译者:dwqs 利用PHP编码生成PDF文件是一个非常耗时的工作.在早期,开发者使用PHP并借助FPDF来生成PDF文件.但是如今,已经有很多函数库可以使用了,并且能够从你提供的HTML文件生成PDF文档.这让原先耗时的工作变得非常简单了. FPDF是很早就被使用的,其特点如下: FPDF FPDF是一个允许使用纯PHP生成PDF文档的PHP类,换句话说,没有使用PDFlib 函数库.

史上最强php生成pdf文件,html转pdf文件方法

之前有个客户需要把一些html页面生成pdf文件,然后我就找一些用php把html页面围成pdf文件的类.方法是可谓是找了很多很多,什么html2pdf,pdflib,FPDF这些都试过了,但是都没有达到我要的求. pdflib,FPDF 这两个方法是需要编写程序去生成pdf的,就也是讲不支持直接把html页面转换成pdf:html2pdf这个虽然可以把html页面转换成pdf文 件,但是它只能转换一般简单的html代码,如果你的html内容要的是通过后台新闻编辑器排版的那肯定不行的. 纠结了半

使用flying-saucer,利用HTML来生成PDF文件(裴东辉)

1.导入maven依赖 <flyingSaucer.version>9.1.0</flyingSaucer.version> <!-- flying-saucer --> <dependency>    <groupId>org.xhtmlrenderer</groupId>     <artifactId>flying-saucer-pdf</artifactId>     <version>${

JAVA生成PDF文件

生成PDF文件是主要应用的是ITEXT插件 1 import java.awt.Color; 2 import java.io.File; 3 import java.io.FileOutputStream; 4 import java.io.IOException; 5 import java.util.ArrayList; 6 import java.util.List; 7 8 import com.lowagie.text.Cell; 9 import com.lowagie.text.

[轉載]史上最强php生成pdf文件,html转pdf文件方法

之前有个客户需要把一些html页面生成pdf文件,然后我就找一些用php把html页面围成pdf文件的类.方法是可谓是找了很多很多,什么html2pdf,pdflib,FPDF这些都试过了,但是都没有达到我要的求. pdflib,FPDF 这两个方法是需要编写程序去生成pdf的,就也是讲不支持直接把html页面转换成pdf:html2pdf这个虽然可以把html页面转换成pdf文 件,但是它只能转换一般简单的html代码,如果你的html内容要的是通过后台新闻编辑器排版的那肯定不行的. 纠结了半