我正在尝试将activerports格式的报告发送到我公司的RightFax服务器,并预先设置了一些传真字段,如传真号码、发件人和收件人。RightFax文档说文档必须包含嵌入式代码来设置这些值,例如<TOFAXNUM:12345556789><TONAME:Recipient><FROMNAME:Sender>
。我在activeports中创建了一个包含此文本的文本框或标签。但是,当RightFax接收到文档并调出RightFax客户端UI时,没有设置这些值。嵌入代码保留在传真图像中。我把RightFax打印机驱动程序设置为HP LaserJet 4。我正在用c#开发,使用Visual Studio 2010 Professional。
网上的一个建议是确保嵌入代码设置为Courier或其他"打印机字体"。但是,Visual Studio没有"Courier"或"Times Roman",只有这些标准字体的MS真实版本,"Courier New"one_answers"Times New Roman"。
这种发送传真的方法是在另一台使用同一台RightFax服务器的机器上使用不使用activeports的旧软件。
如果您能分享activerports与RightFax接口的任何经验,我将不胜感激。
谢谢,Gregg Lobdell
您可以通过使用Windows API控制整个打印过程并发送转义序列来完成任务。我假设您使用的是activerports 6或activerports 7的基于部分的报告。
详细说明:
- 创建自己的PrintDocument并定义PrintPage处理程序 PrintPage处理程序中的
- 使用escape winapi调用向打印机发送转义序列(参见CodeProject中的示例)
- 通过调用page . draw () 来渲染页面本身
只要您使用的是真正的字体,打印机应该能够识别该字体并能够"读取"其中的文本。只有旧的位图字体是打印机可能无法读取的字体。通常在windows上常用的TT字体,如"Courier New"或"Times New Roman",已经在打印机中了,所以它们甚至不会被下载。
然而,RightFax确实有一些关于转义码的文档,所以你可能想尝试在ActiveReports中使用转义码。另外,这里有一个使用ActiveReports6中的SystemPrinter对象直接向打印机发送转义码而不使用任何特殊API的示例。您可以尝试使用该代码并将转义代码替换为RightFax可以理解的转义代码。
最后,ActiveReports本质上是通过从打印机获取图形并在其上绘图来打印的。文本框是用适当的文本命令绘制的真实文本(即文本是而不是呈现为位图)。这是现代窗口中正常的打印方式,因此任何打印机都应该将文本视为正常文本。通过在。net中编写自己的简单打印代码并将其发送给RightFax驱动程序,您应该能够看到相同的结果。如果它在那里工作,它将在activerports中工作。
如果它不起作用,上面的转义码技巧也不起作用,我想下一个合乎逻辑的步骤是联系RightFax并询问他们如何从。net应用程序打印到他们的驱动程序。
希望这对你有帮助!