0

我正在尝试将 ActiveReports 格式的报告发送到我公司的 RightFax 服务器,并预先设置了一些传真字段,例如传真号码、发件人和收件人。RightFax 文档说该文档必须包含嵌入代码才能设置这些值,例如<TOFAXNUM:12345556789><TONAME:Recipient><FROMNAME:Sender>. 我在 ActiveReports 中创建了一个包含此文本的 TextBox 或 Label。但是当 RightFax 接收到文档并调出 RightFax 客户端 UI 时,不会设置这些值。嵌入代码保留在传真图像中。我将 RightFax 打印机驱动程序设置为 HP LaserJet 4。我正在使用 Visual Studio 2010 Professional 在 C# 中进行开发。

网络上的一个建议是确保嵌入代码设置为 Courier 或其他“打印机字体”。但是,Visual Studio 没有“Courier”或“Times Roman”,只有这些标准字体的 MS true type 版本,“Courier New”和“Times New Roman”。

这种发送传真的方法适用于使用相同 RightFax 服务器的另一台机器上不使用 ActiveReports 的旧软件。

您可以分享将 ActiveReports 连接到 RightFax 的任何经验将不胜感激。

谢谢,

格雷格·洛布德尔

4

2 回答 2

0

您可以通过控制整个打印过程并使用 Windows API 发送转义序列来完成您的任务。我假设您使用 ActiveReports 6 或 ActiveReports 7 的基于部分的报告。

更详细地说:

  • 创建您自己的 PrintDocument 并定义 PrintPage 处理程序
  • 在 PrintPage 处理程序中,使用 Escape winapi 调用将转义序列发送到打印机(参见CodeProject上的示例)
  • 通过调用 Page.Draw() 呈现页面本身
于 2013-01-15T06:00:04.060 回答
0

只要您使用真正的类型字体,打印机就应该能够识别该字体并能够“阅读”其中的文本。只有旧的位图字体是打印机可能无法读取的字体。通常在 Windows 上常用的 TT 字体,如“Courier New”或“Times New Roman”,已经在打印机中,因此它们甚至不会被下载。

但是,RightFax 在此处确实有一些关于转义码的文档,因此您可能想尝试在 ActiveReports 中使用转义码。此外,这里是一个使用 ActiveReports6 中的 SystemPrinter 对象直接向打印机发送转义码而不使用任何特殊 API 的示例。您可以尝试使用该代码并将其中的转义代码替换为 RightFax 可以理解的代码。

最后,ActiveReports 本质上是通过从打印机获取图形并在其上绘图来打印的。文本框是用适当的文本命令绘制的真实文本(即文本呈现为位图)。这是在现代 Windows 中打印的一种正常方式,因此任何打印机都应该将文本视为普通文本。通过在 .NET 中编写自己的简单打印代码并将其发送到 RightFax 驱动程序,您应该能够看到相同的确切结果。如果它在那里工作,它将在 ActiveReports 中工作。

如果它不起作用,并且上面的转义代码技巧不起作用,我认为联系 RightFax 并询问他们如何从 .NET 应用程序打印到他们的驱动程序将是下一个合乎逻辑的步骤。

希望这可以帮助!

于 2013-01-23T21:49:29.167 回答