求助高手:
现在我需要实现pdf的两步操作:
1.我需要将Qt的图片导出到pdf文件保存;
2.可以打开已保存的pdf到qt窗口,每页再用图片显示出来。
不知道用什么方式可以实现?
如果Qt不行,C++实现也可以。
多谢。
Qt?PDF?C++
------解决方案--------------------
http://qt-apps.org/content/show.php/qpdfview?content=152086
QT做的PDF的工程源码。
------解决方案--------------------
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,你懂得!