首页 > 代码库 > Qt -QPrinter - Pdf [Qt QPrinter 绘制内容 到 PDF文件]

Qt -QPrinter - Pdf [Qt QPrinter 绘制内容 到 PDF文件]

 

 1 准备好打印设备 QPrinter

    QPrinter printer;

    printer.setOutputFormat(QPrinter::PdfFormat);//设置输出格式为pdf

    printer.setPageSize(QPrinter::A4);//设置纸张大小为A4

    printer.setOutputFileName("test.pdf");//设置输出路径

 

 

2 将 绘制 链接到 打印设备上 QPainter

    QPainter painter;
    painter.begin(&printer);

    //正常使用painter 绘制文字、pixmap等在printer上
....


    //至此,文件被保存
    painter.end();

 

 3 绘制过程中 绘制文字、绘制line 、绘制pixmap 、绘制QRect

   //文字
   painter.setFont(Nstr->font);
   painter.drawText(Nstr->pos, Nstr->str);

   //line
   QPen pen;
   pen.setWidth(Nlin->pointsize);
   painter.drawLine(Nlin->pos1 , Nlin->pos2);

   //pixmap
   //QRect rect = painter.viewport();
   //int multiple = rect.width()/Npix->pixmap.width();
   //使用scale拉伸,效果并不好,总会影响其他输出,推荐只使用Rect得到大小,让pixmap绘制到Rect内,自动填充。
   //painter.scale(multiple, multiple);
   painter.drawPixmap(Npix->rect, Npix->pixmap);

   pen.setColor(Qt::red);
   brush.setColor(Qt::red);
   brush.setStyle(Qt::SolidPattern);
   painter.setBrush(brush);
   painter.setPen(pen);
   painter.drawRect(Nrec->rect);

 

注意:

   1 drawPixmap 时 使用painter.scale(sx , sy); 拉伸图像适应pdf窗体时,一定要使用之后立刻 scale(1 , 1); 不然文字什么的都会发生拉伸。

   2 QBrush 的使用 并不仅仅是setColor() 就可以了,必须还要设置setStyle();

技术分享

 

技术分享

 QPen style

技术分享

 

Qt -QPrinter - Pdf [Qt QPrinter 绘制内容 到 PDF文件]