我搞mfc的,第一次来这个板块发帖,是看到你回复别人虚拟打印技术的问题。所以特来请教。希望 朋友们 回帖以需求为主。 因为发过不少帖子了,很多人都不理解我提出的需求。 回复的答案没有解决问题。
谢谢了啊。 呵呵需求:启动我们的软件,打开一个选择文件对话框,选择文件的类型是word, ppt, excel, pdf这四种。选择后,则把选择的文件 转换为图片,存到磁盘里。转换工作室后台进行,不能让用户看到。所以有的人说,你安装一个虚拟打印机,然后你使用这个软件不就行了。诸如此类答案,我觉得 违背需求, 我们一旦在自己的程序里选择要打开的目标文件后,后台就开始转换了。 而不是去使用 虚打印机这个软件。
初步想法:微软既然没有提供虚拟打印接口,只有使用第三方了。 目前我没有找到。我已经使用com把这些可以转换图片了,但是效果很差。所以 公司让我是用虚拟打印。 据说这个东西涉及到驱动.
谢谢了啊。 呵呵需求:启动我们的软件,打开一个选择文件对话框,选择文件的类型是word, ppt, excel, pdf这四种。选择后,则把选择的文件 转换为图片,存到磁盘里。转换工作室后台进行,不能让用户看到。所以有的人说,你安装一个虚拟打印机,然后你使用这个软件不就行了。诸如此类答案,我觉得 违背需求, 我们一旦在自己的程序里选择要打开的目标文件后,后台就开始转换了。 而不是去使用 虚打印机这个软件。
初步想法:微软既然没有提供虚拟打印接口,只有使用第三方了。 目前我没有找到。我已经使用com把这些可以转换图片了,但是效果很差。所以 公司让我是用虚拟打印。 据说这个东西涉及到驱动.
http://blog.csdn.net/shi0090/article/details/7284428
http://blog.csdn.net/shi0090/article/details/7262199
拜托啊,我已经说了,后台转换,无论什么技术,选择文件后,就不能让用户去点击操作来转换,更不能弹出其他软件的对话框来,作为用户,我觉得这么想也是合理的吧?你说xps文件是什么东西, 请明示思路和原因。寥寥数语,不能理解。
已经下载了,
初步看了英文版的chm,
由于只提供了一个dll,按照c++调用dll的原理,想使用这个dll的一些类,那么就必须有头文件,可惜没有并没有,只有dll,就意味着我无法使用。我在chm看了,里面说c++也可以使用这个库,我觉得不太可能。
你调用类似 Process.Start("winword.exe /p " + yourdocument);
执行后台的转换。虚拟打印机有很多,但是免费开源的不太好找,这里有一个,你看看
http://sourceforge.net/projects/posterprinter/files/
C++写的。
像word这样的软件,调用 /p 参数打印不会出现打印设置对话框。
pdf是用那个公司提供的com?微软是没有的。
嗯,xps事实上就是一个好用的,可以静默运行的虚拟打印机。
adobe acrobat, 需要license,上次看到论坛里有人总结了pdf读取方法可以找找
xps并不是每个机器都装的,
如果客户机器没有装offce,不是白费了?
我调用com其实可以转成图片,图片质量太差,关键代码while (nFormat=EnumClipboardFormats(nFormat)){HANDLE hEmf = ::GetClipboardData(nFormat);if (hEmf){CString str,str2;j=i;str.Format("c:\\%d.xps", i++);str2.Format("c:\\%d.bmp",j);
HBITMAP h = (HBITMAP)::CopyEnhMetaFile((HENHMETAFILE)hEmf, str);if (h){////emf to bmpCConvertEMFToBMP conv;
if(!conv.ConvertEMFToBMP(str,str2,0)){::MessageBox(NULL,_T("emf to bmp failed!"),_T("提示"),MB_OK);}break;}}}你大概可以猜测,这是转换为emf ,然后再转换为bmp格式 。但是质量非常差,无奈,就按照你的说法,改成了xps,注意:str.Format("c:\\%d.xps", i++);这一句, 我已经从网上下载了 xps安装,
结果发现,不能从预览*.xps文件。
粗布原因分析:
我没有用你说的canvas进行转换。所以导致错误。
搜了一下,canvas这个技术,似乎很少,而且我不太熟悉。能否提供这方面的资料。
代码是针对word写的, 可以转化的。采用的是word提供的com
PDF的使用Acrobat COM