最近正在做一个项目,有一个需求一直困扰着我,不知道怎么解决——以前也碰到过。
要求:将相关打印内容合为一个文档,以便多次打印这个合并后的文档。参考方法:
1.使用已有虚拟打印机,如:打印为位图,然后再把几个位图合并到一起。占用资源多,解决第一个打印结束页面与下一个打印开始页面之间的空白,比较难。
2.自己开发虚拟打印机,目前没有可参考的样例,不知道怎么实现。好处是,可以任意形成自己需要的格式文件。
3.将打印的内容,首先打到与printDC相关的内存DC中(已经选择内存BITMAP),然后把BITMAP转成BMP文件。需要添加若干代码,消耗资源比较多,有时候与真实打印又不一致。若将已经绘制好的PRINTDC内容取出放到MEMDC上,然后再转BMP,流程则比较清晰间接,可做成统一的处理接口——但是无法将PRINTDC内容取出,BitBlt函数无效。
4.对于CDC类,若将其所有函数处理,保存为某种格式的命令语句文件,然后解析命令打印是否可行?

解决方案 »

  1.   

     把需要打印的做快照,(我是自己写的类,当然是BMP文件),存在同一文件夹,然后打印这个文件夹的内容,最近也有归档打印的问题,跟你的差不多吧。
      

  2.   

    是不是本来调用OnPrint(PrintDC)改为OnPrint(MemDC),以此保存为位图,然后再PrintDC.BitBlt(...MemDC...)。比如说标准的文档/视图结构,系统默认调用OnPrint函数,已经可以正常打印了。修改在这个函数内部将对PrintDC的操作改为创建的与PrintDC一致的MemDC上,保存MemBmp,然后再PrintDC.BitBlt(...MemDC...)。是这个意思吗?