QPrintPreviewDialog 打印预览文件

Creator_莫言 2014-10-24 02:39:52
这个打印预览对话框需要自己实现paintRequested(QPrinter*)的槽函数,如果我需要将pdf显示在打印预览界面上该如何实现?难道需要我先将pdf提取转成图片后,再画上去吗?
...全文
659 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Creator_莫言 2014-10-28
  • 打赏
  • 举报
回复
引用 15 楼 xiaofeng6552538 的回复:
你的意思是说用Qt打开pdf文件?记忆中好像不能直接打开pdf文件,需要依赖第三方库,你可以找找用Qt 做的pdf工程源码
嗯我之前的本意是想通过打印预览界面,看它能不能直接打开pdf然后显示,找了资料发现都是自己画上去的,现在正在试着编译poppler
小吥点 2014-10-28
  • 打赏
  • 举报
回复
引用 14 楼 sddsighhz 的回复:
谢谢,博客我之前看过了,也试着写过,显示就是在槽函数里面,
    
QTextEdit *ted = new QTextEdit;
ted->insertHtml("<center><img src='"+QString(":/linux.jpg")+"' width='90' height='72'/><b><font size='9'>Logo Text</font></b></center>");
ted->document()->print(paint);
这样是可以在打印界面上显示出图片还有文字,另外html中显示pdf是需要本地有pdf阅读的插件,换言之就是可以打开pdf文件,这又回到了之前的问题上:我要如何打开本地pdf文件。另外我在回复之前都会在本地测试一遍。
你的意思是说用Qt打开pdf文件?记忆中好像不能直接打开pdf文件,需要依赖第三方库,你可以找找用Qt 做的pdf工程源码
Creator_莫言 2014-10-28
  • 打赏
  • 举报
回复
谢谢,博客我之前看过了,也试着写过,显示就是在槽函数里面,
    
QTextEdit *ted = new QTextEdit;
ted->insertHtml("<center><img src='"+QString(":/linux.jpg")+"' width='90' height='72'/><b><font size='9'>Logo Text</font></b></center>");
ted->document()->print(paint);
这样是可以在打印界面上显示出图片还有文字,另外html中显示pdf是需要本地有pdf阅读的插件,换言之就是可以打开pdf文件,这又回到了之前的问题上:我要如何打开本地pdf文件。另外我在回复之前都会在本地测试一遍。
小吥点 2014-10-27
  • 打赏
  • 举报
回复
引用 1 楼 sddsighhz 的回复:
up!!!!
有打印预览这个类,里面有打印pdf格式的,你调用就行了
Creator_莫言 2014-10-27
  • 打赏
  • 举报
回复
up!!!!
小吥点 2014-10-27
  • 打赏
  • 举报
回复
引用 10 楼 sddsighhz 的回复:
[quote=引用 9 楼 xiaofeng6552538 的回复:] 这个Str里面就是你pdf文件里面的所有东西,然后你再将这个Str添加到edit
谢谢你的解答,不过pdf文件是以图片的形式存储的,所以用str来表示它显示是不行的,其次pdf格式的文件要显示是需要解码的,不是单纯的readAll就能表示的,它有自己的格式,所以以上的方法我感觉应该达不到显示pdf的效果[/quote] http://blog.csdn.net/fouder_li/article/details/6705302 你可以看一下这个人的博客,
小吥点 2014-10-27
  • 打赏
  • 举报
回复
引用 10 楼 sddsighhz 的回复:
[quote=引用 9 楼 xiaofeng6552538 的回复:] 这个Str里面就是你pdf文件里面的所有东西,然后你再将这个Str添加到edit
谢谢你的解答,不过pdf文件是以图片的形式存储的,所以用str来表示它显示是不行的,其次pdf格式的文件要显示是需要解码的,不是单纯的readAll就能表示的,它有自己的格式,所以以上的方法我感觉应该达不到显示pdf的效果[/quote] 我给你发的那3个函数的代码不知道你看了没,看了你就知道为什么不需要解码了。
小吥点 2014-10-27
  • 打赏
  • 举报
回复
引用 10 楼 sddsighhz 的回复:
[quote=引用 9 楼 xiaofeng6552538 的回复:] 这个Str里面就是你pdf文件里面的所有东西,然后你再将这个Str添加到edit
谢谢你的解答,不过pdf文件是以图片的形式存储的,所以用str来表示它显示是不行的,其次pdf格式的文件要显示是需要解码的,不是单纯的readAll就能表示的,它有自己的格式,所以以上的方法我感觉应该达不到显示pdf的效果[/quote] 这个不需要解码,不过你找到更好的方法也可以,不过有些东西还是要自己亲自去做,做了以后才能知道行不行,如果你熟悉html的话,你这个问题很简单的就可以实现,你应该也知道Qt 中可以穿插html,自己用html代码写一个模板,
Creator_莫言 2014-10-27
  • 打赏
  • 举报
回复
引用 9 楼 xiaofeng6552538 的回复:
这个Str里面就是你pdf文件里面的所有东西,然后你再将这个Str添加到edit
谢谢你的解答,不过pdf文件是以图片的形式存储的,所以用str来表示它显示是不行的,其次pdf格式的文件要显示是需要解码的,不是单纯的readAll就能表示的,它有自己的格式,所以以上的方法我感觉应该达不到显示pdf的效果
小吥点 2014-10-27
  • 打赏
  • 举报
回复
引用 8 楼 sddsighhz 的回复:
[quote=引用 7 楼 xiaofeng6552538 的回复:] [quote=引用 5 楼 sddsighhz 的回复:] [quote=引用 4 楼 xiaofeng6552538 的回复:] 上面的这些都是Qt自带的打印功能,我稍微把他的修改了一些了的,
谢谢你的代码,不过这里我最想知道的槽函数print(QPrinter*)你没有贴出来,其实我只是想通过打印预览来实现显示pdf的功能,就是打开已有的pdf文件[/quote] 这样说吧,槽函数中你要先找到你已有的pdf文件,然后打开,将里面的内容全部读出来,然后你在new一个textEdit,将读出来的内容显示在这textEdit里面,然后最后调用上面的三个函数中pdf或者print函数,至于读出来的内容现在在textEdit上是以什么形式显示的话,你可以用html, [/quote] 问题就在这里了,打开一个pdf文件,然后把数据放到textEdit里面就能显示pdf了?应该需要解析的吧。我知道槽函数里面要实现什么,但是它需要我先解析这个pdf,比如转换成图片画在上面然后显示。我就是想知道这个打印类能不能帮我解析pdf文件,然后显示在打印预览对话框上面。[/quote] 不是打开pdf文件就能行了,调用readAll()这个函数,这个是继承QIODevice这个类的 QString Path= 存放文件的路径 QFile file(Path); QString Str; QTextEdit edit; if (file.open(QIODevice::ReadOnly)) { QTextStream s(&file); s.setCodec("GBK"); Str=s.readAll(); file.close(); } 这个Str里面就是你pdf文件里面的所有东西, 然后你再将这个Str添加到edit,然后调用exportPdf(edit.document(),"SR")函数,这样就可以了
Creator_莫言 2014-10-27
  • 打赏
  • 举报
回复
引用 7 楼 xiaofeng6552538 的回复:
[quote=引用 5 楼 sddsighhz 的回复:] [quote=引用 4 楼 xiaofeng6552538 的回复:] 上面的这些都是Qt自带的打印功能,我稍微把他的修改了一些了的,
谢谢你的代码,不过这里我最想知道的槽函数print(QPrinter*)你没有贴出来,其实我只是想通过打印预览来实现显示pdf的功能,就是打开已有的pdf文件[/quote] 这样说吧,槽函数中你要先找到你已有的pdf文件,然后打开,将里面的内容全部读出来,然后你在new一个textEdit,将读出来的内容显示在这textEdit里面,然后最后调用上面的三个函数中pdf或者print函数,至于读出来的内容现在在textEdit上是以什么形式显示的话,你可以用html, [/quote] 问题就在这里了,打开一个pdf文件,然后把数据放到textEdit里面就能显示pdf了?应该需要解析的吧。我知道槽函数里面要实现什么,但是它需要我先解析这个pdf,比如转换成图片画在上面然后显示。我就是想知道这个打印类能不能帮我解析pdf文件,然后显示在打印预览对话框上面。
小吥点 2014-10-27
  • 打赏
  • 举报
回复
引用 5 楼 sddsighhz 的回复:
[quote=引用 4 楼 xiaofeng6552538 的回复:] 上面的这些都是Qt自带的打印功能,我稍微把他的修改了一些了的,
谢谢你的代码,不过这里我最想知道的槽函数print(QPrinter*)你没有贴出来,其实我只是想通过打印预览来实现显示pdf的功能,就是打开已有的pdf文件[/quote] 这样说吧,槽函数中你要先找到你已有的pdf文件,然后打开,将里面的内容全部读出来,然后你在new一个textEdit,将读出来的内容显示在这textEdit里面,然后最后调用上面的三个函数中pdf或者print函数,至于读出来的内容现在在textEdit上是以什么形式显示的话,你可以用html,
小吥点 2014-10-27
  • 打赏
  • 举报
回复
引用 5 楼 sddsighhz 的回复:
[quote=引用 4 楼 xiaofeng6552538 的回复:] 上面的这些都是Qt自带的打印功能,我稍微把他的修改了一些了的,
谢谢你的代码,不过这里我最想知道的槽函数print(QPrinter*)你没有贴出来,其实我只是想通过打印预览来实现显示pdf的功能,就是打开已有的pdf文件[/quote] 槽函数,自己写呀, 槽函数里面就调用我上面给你说的那3个函数中的其中一个, 上面三个函数中第一个参数就是你想显示的内容,
Creator_莫言 2014-10-27
  • 打赏
  • 举报
回复
引用 4 楼 xiaofeng6552538 的回复:
上面的这些都是Qt自带的打印功能,我稍微把他的修改了一些了的,
谢谢你的代码,不过这里我最想知道的槽函数print(QPrinter*)你没有贴出来,其实我只是想通过打印预览来实现显示pdf的功能,就是打开已有的pdf文件
小吥点 2014-10-27
  • 打赏
  • 举报
回复
引用 3 楼 sddsighhz 的回复:
[quote=引用 2 楼 xiaofeng6552538 的回复:]
有打印预览这个类,里面有打印pdf格式的,你调用就行了


不知道你说的调用是怎么调用,如果不麻烦的话请把那个函数贴一下[/quote]

这个函数就是打印,连接打印机的话调用这个函数就会打印出报告来,

这个就是打印pdf格式的,

这个就是打印预览

上面的这些都是Qt自带的打印功能,我稍微把他的修改了一些了的,
Creator_莫言 2014-10-27
  • 打赏
  • 举报
回复
引用 2 楼 xiaofeng6552538 的回复:
有打印预览这个类,里面有打印pdf格式的,你调用就行了
不知道你说的调用是怎么调用,如果不麻烦的话请把那个函数贴一下

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧