qt将文字,或者图片或者widget的内容保存为pdf毫无压力,前几天刚研究了,但是没研究过读取pdf…… 下面是研究用的一些代码,因为是研究,所以没有逻辑…… QPrinter printer(QPrinter::HighResolution); //QPrinter printer(QPrinter::ScreenResolution); printer.setPageSize(QPrinter::A4); printer.setOutputFormat(QPrinter::PdfFormat); printer.setOutputFileName("test.pdf"); int physiclaDpiX = printer.physicalDpiX(); int physiclaDpiY = printer.physicalDpiY(); int widthMM = printer.widthMM(); int heighMM = printer.heightMM(); QPixmap p= QPixmap::grabWidget(this, 0, 0, width(), height()); QPainter painter; painter.begin(&printer); QRect rect = painter.viewport(); QRect rect2 = painter.window(); //QSize size = p.size(); //size.scale(rect.size(), Qt::KeepAspectRatio); //此处保证图片显示完整 //painter.setViewport(rect.x(), rect.y(),size.width(), size.height()); //painter.setWindow(p.rect()); // // painter.setViewport(rect.x(), rect.y(), rect.width()/2, rect.height()/2); //painter.setWindow(rect.x(), rect.y(), rect.width()/2, rect.height()/2); //rect = painter.viewport(); //rect2 = painter.window(); //painter.scale(2,2); //这个会将图像(所有要画的东西)在pdf上放大一倍 painter.scale(((float)rect.width())/p.width(),((float)rect.width())/p.width()); painter.drawPixmap(0,0,p); QPen pen; //画笔 pen.setColor(QColor(0,0,0)); pen.setWidth(2); painter.setPen(pen); painter.drawRect(50, 50 , 2412, 2412); // 2362(像素)/1200(pdf分辨率) = 1.9683333 inch = 5cm printer.newPage(); painter.drawPixmap(0,0,p); painter.end(); 有一点你要知道的是,pdf默认dpi还是ppi是1200,非常大,所以需要scale,你懂得! |
|