使用.NET发送传真

时间:2009-02-13 08:30:01

标签: c# crystal-reports fonts printing fax

我正在尝试使用Crystal Reports和Unimessage Pro(或任何其他传真程序)使用.NET(C#)程序发送传真。

我的问题是Unimessage Pro(和其他传真程序)使用打印机字体作为传真命令。由于.NET不支持打印机字体,因此报告中的传真命令将转换为Courier New。结果是传真程序无法识别传真命令,但将其视为纯文本,并且未发送传真。

如何使用Crystal Reports和.NET发送传真?

3 个答案:

答案 0 :(得分:3)

我从WordCraft(Unimessage Pro背后的公司)得到了这个答案

  
      
  1. 在主Windows文件夹中创建名为WilCapAX.INI的文件,例如:   C:\ Windows \ WilCapAX.INI该文件   应包含以下内容:     [WilCapAX]     Commands = C:\ Commands.DAT其中“C:\ Commands.DAT”是其名称   您要创建的文本文件   在您的.NET应用程序中传递
      嵌入式命令到Unimessage Pro。   您可以根据需要编辑路径,   但请保留简短文件和
      文件夹名称。

  2.   
  3. 在您的.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打印机)然后根据需要重复。

  4.   

这解决了这个问题! :)

答案 1 :(得分:1)

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.

Retrun:

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 Sell Sheet”-m“Joyfax Server 5-user   许可证“-f D:\ Sell.xls -r”Kivin< 866-6554-564>“

答案 2 :(得分:0)

当你说使用打印机字体时,我假设你需要发送一些PCL(或类似)命令,例如:

<esc>(s..... 

如果是这种情况,我认为你不能直接将其嵌入到Crystal中。

我们必须通过Crystal(没有Escape)发送特殊序列,在这些情况下,我们创建一个新的Formula框,不要更改除字体之外的任何元素(选择Courier)。这些元素应该直接传递给打印机,而不会被驱动程序转换太多。这可能;但是,不能解决你的问题。

应该使用的另一个选项是使用Microsoft的Driver Development Kit构建自己的打印机驱动程序。您可以创建自己的迷你驱动程序并将字体与特定字体调用相关联,因此当您指定该字体时,您可以正确地将代码插入到代码中。

您也可以按照我们的方式处理此问题(不是使用Crystal,而是使用其他类似的报告)。我们使用RightFax作为我们的传真服务器,它允许通过元数据文件“附加”文件。我们生成报告,将其作为PDF或其他格式放入特定位置,然后向RightFax传递一个元数据文件,其中包含收件人的传真号码和一个命令,告诉它将文件附加到文件系统上。

RightFax'adpend'文件看起来像这样:

{{begin}}
{{nocover}}
{{fax (403) 555-1212}}
{{subject Test Fax}}
{{attach c:\reports\report1.pdf delete}}
{{imagetype pdf}}
{{end}}