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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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文件]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Qt WebEngineView 在特定页面打开 PDF

Qt PDF教程? [关闭]

无法使用 Qt 生成具有可接受输出质量的 pdf

Qt:使用 poppler 库打开 qrc pdf

使用 Qt 打印 PDF 文件

QT QCustmPlot把折线图生成PDF