0

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

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

上周我花了很多时间试图让IE 打印模板能够满足我的需求……但最终失败了。这些东西的文档记录很差,我能做的似乎随机崩溃了。所以在这一点上我放弃了IE ...

所以我的问题是——有没有一种方法可以将打印合并到我的 C++ 程序中,以达到我上面描述的目的?

4

3 回答 3

1

如果我没记错的话,打印机有自己的 HDC,你可以利用它。如果有一些简单的东西,那会起作用。如果你想使用纯 WinAPI 渲染 HTML 页面,你就有大麻烦了。

我建议放弃 winapi 并改用 GUI 框架。

Qt 4(和 5,最有可能)具有可以显示富文本的文本编辑器、富文本的布局引擎、可以显示网页的组件。稍微阅读一下文档,您很可能会找到一种将网页呈现到打印机而不是屏幕上的方法。到目前为止,它看起来正是您需要的。

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

如果你不想使用 Qt,你可以尝试类似WebKIT的东西,但我对它有一些不好的体验,而且 Qt 可能更容易使用。

有关打印的附加信息:使用 Qt 打印

于 2013-09-24T22:21:02.387 回答
0

如果您想使用 win32 内置函数,请尝试搜索 GDI。

或者使用其他工具包,例如 wxWidgets。或者考虑使用一些库写入 PDF。或者让 LaTeX 完成繁重的工作 - 编写文本文件很容易。只要您不想根据布局修改输出,LaTeX 方式就可以工作(一个不适用于 LaTeX 的用例是每页顶部/底部的“平衡”。)

于 2013-09-24T21:40:18.340 回答
-1

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

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

于 2013-09-24T21:56:40.017 回答