【问题标题】:ActiveReports interface to RightFax到 RightFax 的 ActiveReports 接口
【发布时间】:2012-12-29 02:09:55
【问题描述】:

我正在尝试将 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 的任何经验,我们将不胜感激。

谢谢,

格雷格·洛伯德尔

【问题讨论】:

  • 最后我完全避免了嵌入代码。我将活动报告导出到 tiff 文件,然后将该文件用作传真正文。我创建了一个收集传真设置的窗口,然后调用 RightFax API 来创建、配置和发送传真。

标签: c# fax activereports rightfax


【解决方案1】:

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

更详细的:

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

【讨论】:

  • 很好地复制了我在 ActiveReports 论坛中提出的这个问题的相同答案。我正在 StackOverflow 上寻找更广泛的经验基础,也许是有 RightFax 经验的人。 @olegz 你有什么要补充的吗?
  • 这完全是我的答案,有人刚刚将它复制到论坛。您对我建议的方式有什么特别的困扰吗?
  • gmlobdell,我发布了一个使用 codeproject 代码的项目。你能从这里下载它并运行它吗? datadynamics.com/forums/150920/ShowPost.aspx
  • @olegz 很抱歉复制问题,我读错了时间戳。您的答案是第一个,ActiveReports 论坛上的另一个是副本。我在这里接受了你的答案,因为它最接近我最终实现的答案。我没有使用 Escape winapi 或 Page.Draw(),而是最终调用 RightFax API 来设置我需要设置的传真参数。我完全避免了嵌入代码。
【解决方案2】:

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

但是,RightFax does have some documentation on escape codes here,因此您可能想尝试在 ActiveReports 中使用转义码。此外,here 是使用 ActiveReports6 中的 SystemPrinter 对象直接向打印机发送转义码而不使用任何特殊 API 的示例。您可以尝试使用该代码并将其中的转义代码替换为 RightFax 可以理解的代码。

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

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

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    相关资源
    最近更新 更多