我正在尝试使用 Crystal Reports 和 Unimessage Pro(或任何其他传真程序)通过 .NET (C#) 程序发送传真。
我的问题是 Unimessage Pro(和其他传真程序)将打印机字体用于传真命令。由于 .NET 不支持打印机字体,因此报告中的传真命令将转换为 Courier New。这样做的结果是传真程序无法识别传真命令,而是将它们视为纯文本并且传真没有发送。
如何使用 Crystal Reports 和 .NET 发送传真?
我正在尝试使用 Crystal Reports 和 Unimessage Pro(或任何其他传真程序)通过 .NET (C#) 程序发送传真。
我的问题是 Unimessage Pro(和其他传真程序)将打印机字体用于传真命令。由于 .NET 不支持打印机字体,因此报告中的传真命令将转换为 Courier New。这样做的结果是传真程序无法识别传真命令,而是将它们视为纯文本并且传真没有发送。
如何使用 Crystal Reports 和 .NET 发送传真?
我从 WordCraft(Unimessage Pro 背后的公司)得到了这个答案
在 Windows 主文件夹中创建一个名为 WilCapAX.INI 的文件,例如 C:\Windows\WilCapAX.INI 该文件应包含以下内容: [WilCapAX] Commands=C:\Commands.DAT 其中“C:\Commands.DAT”为您将在 .NET 应用程序中创建的文本文件的名称,以将
嵌入式命令传递给 Unimessage Pro。如有必要,您可以编辑路径,但请保留简短的文件和
文件夹名称。在您的 .NET 应用程序中,当您有要通过
Unimessage Pro 发送的内容时,您需要:2.1 根据 WilCapAX.INI 中定义的名称,创建一个名为 C:\Commands.DAT 的文本文件,其中包含:
BLANK LINE [[TO=Fax Number or Email address]] [[SUBJECT=Whatever you want the subject to be]]
文件的第一行必须为空白或包含嵌入命令以外的内容 - 它将被跳过。C:\Commands.DAT 文件中的其他行都应包含一个嵌入式命令。
2.2 向 Unimessage Pro 打印机打印一条消息 - Unimessage Pro 打印机接受打印作业并将查找在 WilCapAX.INI 中指定的文件。如果找到在 WilCapAX.INI (C:\Commands.DAT) 中指定的文件,则从中提取嵌入的命令,然后删除“C:\Commands.DAT”文件,并将打印捕获与从其中提取的命令一起处理C:\Commands.DAT 文件。
2.3 等待 C:\Commands.DAT 文件消失(表明它已被 Unimessage Pro 打印机处理),然后根据需要重复。
这解决了问题!:)
Joyfax 客户端控制台 1.0(测试版)
注意:请在运行此应用程序之前启动 Joyfax Client v5.2 或更高版本。
JoyfaxConsole [选项] -f [;...][;FileN] -r ""
-f file or folder Files or files in sub folders to be faxed.
i.e: C:\Test\;C:\MyPDFs\*.pdf
-r Recipients Recipient list. For more see Fax Recipients. Must begin and end with double quotation marks(").
选项:
-a Synchronous Wait until fax sent completed;
-s Subject Subject of fax, i.e.: "Joyfax Sell Sheet";
-m Meno Memo of fax, i.e.: "Joyfax Server 5-user license";
-c CoverPage Cover Page profile to be used;
-d Header Header & footer profile to be used,
0 = None; 1 = General; 2 = Compact; 3 = Detailed
-k Kill Delete input files if fax sent successfully.
返回:
0 - Success;
1 - Initialize failed;
2 - Invalid parameter;
3 - Unknown erorr (may unsupported file type).
例子:
JoyfaxClientConsole -d 2 -f "C:\My PDFs\D90.PDF" -r "Samm Kivin<866-6554-564>;格林先生<(846)6554-564>"
JoyfaxClientConsole -f C:\MyPDFs*.pdf;D:\Sell.xls -r "Samm Kivin<866-6554-564>"
JoyfaxClientConsole -s "Joyfax 销售表" -m "Joyfax 服务器 5 用户许可证" -f D:\Sell.xls -r "Kivin<866-6554-564>"
当您说使用打印机字体时,我假设您需要发送一些 PCL(或类似)命令,例如:
<esc>(s.....
如果是这种情况,我认为您不能直接将其嵌入到 Crystal 中。
过去我们不得不通过 Crystal 发送特殊序列(没有 Escape),在这些情况下,我们创建一个新的公式框并且不更改除字体之外的任何元素(选择 Courier)。这些元素应该直接传递给打印机,而不会被驱动程序转换太多。这可能; 但是,不能解决您的问题。
另一个可行的选择是使用 Microsoft 的驱动程序开发工具包构建您自己的打印机驱动程序。您可以创建自己的迷你驱动程序并将字体与特定的字体调用相关联,因此当您指定该字体时,您可以将代码正确插入到您的代码中。
您也可以按照我们的方式处理此问题(不是使用 Crystal,也可以使用其他类似的报告)。我们使用 RightFax 作为我们的传真服务器,它允许通过元数据文件“附加”文件。我们生成报告,将其以 PDF 或其他格式放入特定位置,然后向 RightFax 传递一个元数据文件,其中包含收件人的传真号码和一个命令,告诉它将文件附加到文件系统上。
RightFax 的“附加”文件如下所示:
{{begin}}
{{nocover}}
{{fax (403) 555-1212}}
{{subject Test Fax}}
{{attach c:\reports\report1.pdf delete}}
{{imagetype pdf}}
{{end}}