当前位置:网站首页>Two methods of QT exporting PDF files

Two methods of QT exporting PDF files

2022-06-24 08:30:00 Pepsi__

Design software interface , It is required to export the character's information and avatar into pdf
 Insert picture description here
Method 1 : Use QPrinter+QPainter.
In the project .pro Add... To the document

QT       += printsupport
// export pdf
void MainWindow::on_pushButton_clicked()
{
    
    QPrinter printer(QPrinter::HighResolution);
    printer.setPageSize(QPrinter::A4);
    printer.setResolution(300);
    printer.setOutputFormat(QPrinter::PdfFormat);
    // Set export pdf route 
    printer.setOutputFileName("D:\\test.pdf");
    // Create a brush , With QPainter As a Sketchpad 
    QPainter painter;
    
    painter.begin(&printer);

    QFont font = ui->label_9->font();
    // Bold font 
    font.setBold(true);
    painter.setFont(font);
    painter.drawText(1200,50,ui->label_9->text());

    QPen pen;
    pen.setColor(QColor(100,150,255));
    pen.setWidth(5);
    painter.setPen(pen);
    // Draw a horizontal line 
    painter.drawLine(0,100,2400,100);

    font.setBold(false);
    font.setPointSize(20);
    font.setFamily(" Microsoft YaHei ");
    painter.setFont(font);
    pen.setColor(QColor(0,0,0));
    painter.setPen(pen);
    painter.drawText(100,500,ui->label->text());
    painter.drawText(100,800,ui->label_2->text());
    painter.drawText(100,1100,ui->label_4->text());
    painter.drawText(800,500,ui->label_6->text());
    painter.drawText(800,800,ui->label_7->text());
    painter.drawText(800,1100,ui->label_8->text());
    // Get control image 
    QPixmap pixmap = QPixmap::grabWidget(ui->label_5,ui->label_5->rect());
    QRect rect = painter.viewport();
    // Set magnification 
    int multiple = rect.width()/3/pixmap.width();
    // Zoom in multiple times 
    painter.scale(multiple,multiple);
    painter.drawPixmap(300,60,pixmap);

    painter.end();
}

Method 2 : Use QPdfWriter+QPainter

// export pdf
void MainWindow::on_pushButton_2_clicked()
{
    

    QFile pdfFile("D:\\test.pdf");
    pdfFile.open(QIODevice::WriteOnly);
    QPdfWriter *pdfWriter = new QPdfWriter(&pdfFile);
    pdfWriter->setPageSize(QPagedPaintDevice::A4);
    //QPdfWriter As a Sketchpad 
    QPainter *painter = new QPainter(pdfWriter);

    QFont font = ui->label_9->font();
    // Bold font 
    font.setBold(true);
    painter->setFont(font);
    painter->drawText(1200,50,ui->label_9->text());

    QPen pen;
    pen.setColor(QColor(100,150,255));
    pen.setWidth(5);
    painter->setPen(pen);
    // Draw a horizontal line 
    painter->drawLine(0,100,2400,100);

    font.setBold(false);
    font.setPointSize(20);
    font.setFamily(" Microsoft YaHei ");
    painter->setFont(font);
    pen.setColor(QColor(0,0,0));
    painter->setPen(pen);
    painter->drawText(100,500,ui->label->text());
    painter->drawText(100,800,ui->label_2->text());
    painter->drawText(100,1100,ui->label_4->text());
    painter->drawText(800,500,ui->label_6->text());
    painter->drawText(800,800,ui->label_7->text());
    painter->drawText(800,1100,ui->label_8->text());
    // Get control image 
    QPixmap pixmap = QPixmap::grabWidget(ui->label_5,ui->label_5->rect());
    QRect rect = painter->viewport();
    // Set magnification 
    int multiple = rect.width()/3/pixmap.width();
    // Zoom in multiple times 
    painter->scale(multiple,multiple);
    painter->drawPixmap(300,60,pixmap);

    // Destroy instance 
    delete painter;
    delete pdfWriter;
    // Close file 
    pdfFile.close();
}

Software running effect :
Click export pdf1 Use the first method to export pdf, Click export pdf2 Use the second method to export pdf
 Insert picture description here
Derived pdf file :
 Insert picture description here

原网站

版权声明
本文为[Pepsi__]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/175/202206240558136680.html