如何在我的C ++应用程序中添加对打印的支持

时间:2013-09-24 21:27:25

标签: c++ windows winapi

我有一个看似简单的任务。我用C ++编写了一个Windows应用程序。现在我需要添加一个打印表单的功能 - 没什么花哨的,只是纯文本,有线条,表格和简单的图形。除了打印,用户还需要能够在屏幕上预览所有正在打印的表格。

以前我能够通过使用嵌入式Internet Explorer控件来完成这项任务,并设计HTML中的所有表单(我喜欢它 - HTML部分。)但问题来自IE ...嗯......我希望每次听到这句话都能得到镍:)无论如何,IE可以打印HTML页面,但它不能为我的软件用户提供任何简单的方法来自定义页面大小,页边距等。

spent上周试图让 IE打印模板与我需要的东西一起工作......但最终失败了。这些东西记录很差,我能做的事情似乎随机地撞到了我身上。所以在这一点上我放弃了IE ......

所以我的问题是 - 有没有办法将打印结合到我的C ++程序中,用于上述目的?

3 个答案:

答案 0 :(得分:1)

如果我没记错的话,打印机有自己的HDC,你可以在上面画画。如果有一些简单的话,这将有用。如果你想使用纯WinAPI呈现HTML页面,那你就麻烦大了。

我建议放弃winapi并尝试使用GUI框架。

Qt 4(和5,最有可能)有text editor可以显示富文本,layout engine用于富文本,组件可以显示web pages。稍微阅读文档,您很可能会找到一种方法将网页呈现在打印机而不是屏幕上。到目前为止,它看起来就像你需要的那样。

使用Qt将添加依赖项(20 + MB的DLL用于您的项目),但是,IMO<它比尝试使用IE COM接口更好。

如果你不想使用Qt,你可以尝试类似WebKIT的东西,但我有一些不好的经验,加上Qt可能更容易使用。

有关打印的其他信息:Printing with Qt

答案 1 :(得分:0)

如果你想使用win32 builtins,请尝试搜索GDI。

或者使用像wxWidgets这样的其他工具包。或者考虑用某些库写入PDF。或者让LaTeX做繁重的工作 - 编写文本文件很容易。只要您不想根据布局修改输出,LaTeX方式就会起作用(一个不能与LaTeX一起使用的用例是每页顶部/底部的“余额”。)

答案 2 :(得分:-1)

考虑让您的程序生成XML文件并使用XSLT将它们呈现为HTML。

通过附加样式表,您可以更轻松地自定义演示文稿。