打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Qt导出和导入pdf问题
userphoto

2013.10.30

关注
             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,你懂得!         
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python调用打印机参考例子
Qt5.9开发指南笔记
【pyqt5学习】
qt zint实现打印一维条形码
Qt编写自定义控件13-多态进度条
QT-QPainter介绍
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服