2013-01-15 14 views
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#中进行开发。ActiveReports接口到RightFax

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

发送传真的这种方法与使用相同RightFax服务器的另一台计算机上的较旧软件(不使用ActiveReports)协同工作。

任何经验,你可以共享接口的ActiveReports到RightFax将不胜感激。

感谢,

格雷格Lobdell

+0

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

回答

0

您可以通过控制整个印刷过程和发送使用Windows API的转义序列完成你的任务。我假设你使用的ActiveReports 6或7的ActiveReports

更详细的基于片段的报道:

  • 创建自己的PrintDocument的和在处理器的PrintPage定义的PrintPage处理器
  • 使用发送转义序列打印机逃生WINAPI调用(见CodeProject的例子)
  • 渲染页面本身通过调用Page.Draw()
+0

我在ActiveReports论坛中询问的问题的相同答案的好副本。我在StackOverflow寻找更广泛的经验基础,也许有RightFax经验的人。 @olegz你有什么补充吗? – gmlobdell

+0

这完全是我的答案,有人刚把它复制到论坛。我建议的方式有什么特别的麻烦吗? – olegz

+0

gmlobdell,我发布了一个使用codeproject代码的项目。你可以从这里下载它并请运行它。 http://www.datadynamics.com/forums/150920/ShowPost.aspx –

0

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

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

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

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

希望这会有所帮助!