zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    ansible-palybook剧本
    ansible服务的部署与使用
    keepalived实现nginx高可用
    Linux下通过uptime判断负载情况
    2个无线路由器怎么连接
    Delphi FastReport动态加载图片 (转载)
    SQLite 日期 & 时间
    SuperObject使用
    php int 与 datetime 转换
    sqlserver 2005/2008 导入超大sql文件
  • 原文地址:https://www.cnblogs.com/hisoka/p/5996154.html
Copyright © 2011-2022 走看看