我想在控件中显示文档,思路是将文档转换为图片格式然后再显示,请问有没有人有文档转图片的经验,能否给点思路或代码,多谢了!

wind2kite 2008-12-26 09:34:08
因为我要类似多媒体播放那样播放文档,还可能会添加一些其他动作,所以要将文档转换成图片格式再做显示。我现在所知道的思路是通过虚拟打印机转换,但是虚拟打印机知识实在是欠缺,不知道是不是虚拟打印机要自己编写一个还是用别人的虚拟打印机也可以,希望有朋友可以给点思路,最好是能比较具体点的,如果是说可以从虚拟打印机获取到ps文件(postscript)然后再转图片,那么最好能说下ps文件如何转换到图片,虚拟打印机是否需要自己编码实现。我还在网上看到过这样的话“替换打印处理器,在PrintDocumentOnPrintProcessor里面对spool file进行分解,即可得出每一页的EMF图片”,请问大家可否给我解释下如何实现,最好是有一些代码清单。在此多谢了
...全文
188 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wind2kite 2008-12-29
  • 打赏
  • 举报
回复
期待有朋友来指点下,指点下虚拟打印机的例程或者相关知识
或许不知是否可以从另一条路走,那就是生成ps(postscript)文件再转换到图片格式,那么如何用程序实现ps文件转换到图片(bmp/jpg)文件呢
aaron_xx_xaut 2008-12-29
  • 打赏
  • 举报
回复
mark!!!
wind2kite 2008-12-26
  • 打赏
  • 举报
回复
不好意思,上午我忽略了一点没用解释清楚,那就是“文档”,比如说我要把word、excel、ppt等文档转换到图片格式以显示到终端。
给大家个网址,http://www.i-enet.com/products/convertagent.html
其实要实现的功能大概就和网址上的软件一样
ivan_08 2008-12-26
  • 打赏
  • 举报
回复
还是问题说清楚了一切就Ok啊
guanghong 2008-12-26
  • 打赏
  • 举报
回复
up 楼上已经给出解决方案了
Tinary3v0 2008-12-26
  • 打赏
  • 举报
回复
楼主需要的就是下面这个函数里面的HBITMAP hbmScreen,楼主根据情况设定这个变量为成员变量 还是临时变量:

void C**::CaptureScreen( )
{
CClientDC hdcScreen(this);

CRect clientRect;
GetClientRect(&clientRect);

HDC hdcCompatible = CreateCompatibleDC(hdcScreen);

HBITMAP hbmScreen = CreateCompatibleBitmap(hdcScreen,clientRect.Width(),clientRect.Height());

BitBlt(hdcCompatible,0,0,clientRect.Width(),clientRect.Height(),hdcScreen,0,0,SRCCOPY);

//这里就是文档的图像了——hbmScreen

DeleteObject(hbmScreen);
DeleteDC(hdcCompatible);
DeleteDC(hdcScreen);
}


接下去的工作就是怎么操作这个HBITMAP hbmScreen;了。
wind2kite 2008-12-26
  • 打赏
  • 举报
回复
这么说吧,打印机有个打印预览,其实就是转换为图片的形式预览出来的,我想达到的效果和打印预览差不多,就是将文档以图片的形式在对话框中显示出来。物理过程可以理解为我要将文档的每一页转换为图片,但是我要的是将图片保存之前的存在内存里的那片地址,而不是要的保存成功的图片这个结果,比如第一步是读取文档到内存,第二步是转换这片内存的文档格式为图片格式形成一片新的内存,第三步是将这片图片格式的内存保存为图片,但我要的是第二步形成的那片内存,不需要第三步。
「已注销」 2008-12-26
  • 打赏
  • 举报
回复
在内在中生成一副图片,然后把文字画到图片上去,使用GDI或者GDI+都行,非常简单,没必要使虚拟打印机
ivan_08 2008-12-26
  • 打赏
  • 举报
回复
我也不太清楚,是不是就是你把你要显示的文字、字母等在图片上画出来呢?
wind2kite 2008-12-26
  • 打赏
  • 举报
回复
我讲的可能不太明白,其实我不需要实际的转换成的图片文件,图片文件只是我中间的一个步骤,在程序中我将文档转换成图片格式然后显示到终端,之后这个图片文件是不保存的,或许可以这样说,这个图片格式只是我内存中生成,直接传入终端,并不对他进行保存,我并不需要实际转换成的图片文件,如果我只是需要图片文件,那方式多的狠,网上也有软件可以直接转换的,而我需要的是过程,不是结果。
同样谢谢zzz822163
zzz822163 2008-12-26
  • 打赏
  • 举报
回复
http://blog.sina.com.cn/s/blog_5245a00f0100betp.html
wind2kite 2008-12-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ilovedrv 的回复:]
由word格式转换到其它图片格式,自己写转换程序不显示

这个需要做虚拟打印驱动程序了
[/Quote]
是啊,可是打印机这块头一次接触,所以希望在大家这里可以得到些帮助,还望朋友们有懂的能不吝赐教啊,感激不尽。



附:邮箱:wangsw58@gmail.com
ilovedrv 2008-12-26
  • 打赏
  • 举报
回复
由word格式转换到其它图片格式,自己写转换程序不显示

这个需要做虚拟打印驱动程序了
wind2kite 2008-12-26
  • 打赏
  • 举报
回复
我现在要做的是项目中的一个功能,要我实现文档转图片来配合系统,而不是说要系统那面添加个ActiveX控件来适应我,这里面还会包括文档有很多页,要调整一页一页的翻页显示。比如我提供给系统一个接口,GetBMPFromWrod(WordFilePath, buffer,nPage),系统传入word文档的路径,我返回一个转换好的第nPage页的图片格式的内存buffer。
我发现解释越多越容易让大家迷惑,其实大家有点想错了我的侧重点,我的侧重点是过程,转换word到jpg/bmp的过程,而不是保存为jpg文件或直接将其显示出来这个结果。我不会的是转换过程,而不是说不知道如何将jpg显示到终端。
Tinary3v0 2008-12-26
  • 打赏
  • 举报
回复
要是做到网址上的那样 恐怕我们也能拿去卖钱了

不过如果是一些简单的 例如Word PDF等楼主还是可以实现的 只要添加Word PDF的ActiveX控件到程序当中
然后将我上面的代码 在控件的窗口中去实现 也就是里面的CClientDC取控件的DC就行了。

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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