日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT生成PDF文档

發(fā)布時(shí)間:2023/12/10 c/c++ 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT生成PDF文档 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
//生成PDF文檔,str為傳入的學(xué)號 CreatePDF(QVector<QString> str) {//保存程序當(dāng)前路徑QString currentDir = QDir::currentPath();//生成pdf保存的路徑QString file_path = QFileDialog::getExistingDirectory(this,"請選擇保存路徑","C:\\Users\\Administrator\\Desktop");if(file_path.isEmpty()){return;QMessageBox::warning(this,"提示","路徑不能為空");}//將程序的執(zhí)行路徑設(shè)置到filePath下QDir tempDir;tempDir.setCurrent(file_path);//qDebug()<<tempDir.currentPath();//進(jìn)度條QProgressBar *m_pProgressBar = new QProgressBar(this);m_pProgressBar->setOrientation(Qt::Horizontal); // 水平方向m_pProgressBar->setMinimum(1); // 最小值m_pProgressBar->setMaximum(str.size()); // 最大值m_pProgressBar->setMaximumHeight(15);m_pProgressBar->setMinimumWidth(60);m_pProgressBar->setVisible(true);for(int i=0;i<str.size();i++){m_pProgressBar->setValue(i);QCoreApplication::processEvents();QPixmap qrimage=GenerateQRcode(str.at(i));//Qt5 pdfwriter生成pdfQString fileName=str.at(i)+".pdf";//qDebug()<<str.at(i);QFile pdfFile(fileName);//判斷文件是否存在if(QFile::exists(fileName)){QMessageBox::StandardButton reply;reply = QMessageBox::question(this, "提示", "文件已經(jīng)存在,點(diǎn)擊是將覆蓋原文件", QMessageBox::Yes | QMessageBox::No);if(reply == QMessageBox::Yes){continue;}else{return;}}else{// 打開要寫入的pdf文件pdfFile.open(QIODevice::WriteOnly);QPdfWriter* pPdfWriter = new QPdfWriter(&pdfFile); // 創(chuàng)建pdf寫入器pPdfWriter->setPageSize(QPagedPaintDevice::A4); // 設(shè)置紙張為A4pPdfWriter->setResolution(300); // 設(shè)置紙張的分辨率為300,因此其像素為3508X2479int iMargin = 60; // 頁邊距pPdfWriter->setPageMargins(QMarginsF(iMargin, iMargin, iMargin, iMargin));QPainter* pPdfPainter = new QPainter(pPdfWriter); // qt繪制工具// 標(biāo)題,居中QTextOption option(Qt::AlignHCenter | Qt::AlignVCenter);option.setWrapMode(QTextOption::WordWrap);//二維碼pPdfPainter->drawPixmap(1600,70,qrimage);//字體QFont font;font.setFamily("simhei.ttf");//標(biāo)題,字號int fontSize = 22;font.setPointSize(fontSize);pPdfPainter->setFont(font); // 為繪制工具設(shè)置字體pPdfPainter->drawText(QRect(0, 0, 1980, 100),Qt::AlignHCenter|Qt::AlignBottom,"青少年兒童健康體檢表");//option.setWrapMode(QTextOption::WordWrap);//畫表格pPdfPainter->setFont(QFont("", 10));pPdfPainter->drawText(20,180,"姓名:");pPdfPainter->drawText(500,180,"性別:");pPdfPainter->drawText(1000,180,"年齡:");pPdfPainter->drawText(20,250,"班級:");QDate date=QDate::currentDate();QString create_time=date.toString("yyyy/MM/dd");pPdfPainter->drawText(500,250,QString("體檢日期:%1").arg(create_time));pPdfPainter->drawText(20,320,QString("編號:%1").arg(str.at(i)));// 標(biāo)題下邊留白int iTop = 350;// 左側(cè)縮進(jìn)int iLeft = 20;// 設(shè)置畫筆顏色、寬度//pPdfPainter.setPen(QPen(QColor(0, 160, 230), 2));pPdfPainter->setPen(2);// 設(shè)置畫刷顏色//pPdfPainter->setBrush(QColor(255, 160, 90));pPdfPainter->drawRect(iLeft, iTop, 1980, 2750);//表格矩形方框pPdfPainter->drawLine(iLeft,iTop+100,iLeft+1980,iTop+100);pPdfPainter->drawLine(iLeft,iTop+500,iLeft+1980,iTop+500);pPdfPainter->drawLine(iLeft,iTop+1000,iLeft+1980,iTop+1000);pPdfPainter->drawLine(300,iTop,300,iTop+2750);pPdfPainter->drawText(iLeft+50,iTop+60,"檢查項(xiàng)目");pPdfPainter->drawText(iLeft+900,iTop+60,"內(nèi)容");pPdfPainter->drawText(iLeft+50,iTop+260,"體成分");pPdfPainter->drawText(iLeft+50,iTop+760,"脊柱");pPdfPainter->drawText(iLeft+50,iTop+1260,"骨齡");pPdfWriter->newPage();pPdfPainter->drawText(50,1260,"骨齡");delete pPdfPainter;delete pPdfWriter;pdfFile.close();//將程序當(dāng)前路徑設(shè)置為原來的路徑}}tempDir.setCurrent(currentDir);delete m_pProgressBar;QMessageBox::warning(this,"提示","導(dǎo)出完成"); }

實(shí)現(xiàn)功能,根據(jù)傳入ID批量生成PDF文檔并帶有二維碼,選擇文件路徑并判斷生成的pdf文件是否存在

效果圖:

?

總結(jié)

以上是生活随笔為你收集整理的QT生成PDF文档的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。