【问题标题】:Sending fax with .NET使用 .NET 发送传真
【发布时间】:2012-09-25 09:48:55
【问题描述】:

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

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

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

【问题讨论】:

  • '将打印机字体用于传真命令' 字体如何成为命令?
  • 我认为他的意思是使用特殊的打印机常驻字体。因此,这将等同于 PCL 命令或转义序列,并且您调用特殊字体后跟传真号码......可能是错误的,但这是我收集的。
  • “为传真命令使用打印机字体”并不意味着字体就是命令。这意味着它在执行传真命令时使用“打印机字体”(在这种情况下,我认为实际上是嵌入的传真字体)。

标签: c# crystal-reports fonts printing fax


【解决方案1】:

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

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

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

这解决了问题! :)

【讨论】:

    【解决方案2】:

    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 基文;先生绿色"

    JoyfaxClientConsole -f C:\MyPDFs*.pdf;D:\Sell.xls -r "Samm 基文"

    JoyfaxClientConsole -s "Joyfax 销售表" -m "Joyfax Server 5-user 许可证" -f D:\Sell.xls -r "Kivin"

    【讨论】:

    • 您是否隶属于该产品?
    【解决方案3】:

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

    <esc>(s..... 
    

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

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

    另一个可行的方法是使用 Microsoft 的驱动程序开发工具包构建您自己的打印机驱动程序。您可以创建自己的 Mini Driver 并将字体与特定的字体调用相关联,因此当您指定该字体时,您可以将代码正确插入到您的代码中。

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

    RightFax 'attach' 文件如下所示:

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

    【讨论】:

      猜你喜欢
      • 2011-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多