c# - RightFax C# 通过 RFCOMAPILib - 附件

标签 c# fax rightfax captaris

我正在尝试以高效的方式通过 RightFax 发送传真。

我的用户需要传真 PDF,尽管应用程序运行良好,但批量发送速度非常慢(> 20 个收件人,每份传真大约需要 40 秒)。

// Fax created
fax.Attachments.Add(@"C:\\Test Attachments\\Products.pdf", BoolType.False);
fax.Send();

RightFax有*Library Documents这个概念,所以我想我们可以做的是把一个PDF文档作为一个Library Document存储在服务器上,然后再使用它,所以不需要为 n 个用户上传此 PDF。

我可以毫无问题地创建图书馆文档(我可以检索它们等),但是如何向其中添加 PDF? (我在服务器上有权限。)

LibraryDocument doc2 = server.LibraryDocuments.Create;
doc2.Description = "Test Doc 1";
doc2.ID = "568"; // tried ints everything!
doc2.IsPublishedForWeb = BoolType.True;
doc2.PageCount = 2;
doc2.Save();

此外,一旦我创建了传真,API 就会为您提供“StoreAsNewLibraryDocument”选项,该选项在运行时会抛出异常。 System.ArgumentException:值不在预期范围内

fax.StoreAsNewLibraryDocument("PRODUCTS","the products");

对我们来说重要的是如何通过 RFCOMAPILib 使用 API 以最有效的方式发送 500 份传真。我认为,如果我们可以重用 附加的 PDF,将会大大提高性能。显然,当您有数百个收件人时,在 40 秒内发送传真是 Not Acceptable 。

如何通过API以最高效的方式发送带附件的传真?

最佳答案

StoreAsNewLibraryDocument() 是使用 RightFax COM API 存储 LibraryDocument 的唯一实用方法,但假设您没有使用预先存在的 LibraryDocument,您必须在发送第一份传真后立即调用该函数,这将有一个常规文件(不是 LibraryDoc)附件。

(不要像上面那样自己在服务器上创建一个 LibraryDoc 对象——只有在服务器上有一个不是 LibraryDocument 的现有文件并且您想将它变成一个。你可能永远不会遇到这样的场景。)

然后,您指定为 StoreAsNewLibraryDocument() 的第一个参数的 ID 字符串将引用新的 LibraryDocument(在后续的传真附件中)。如果该 ID 对于 RightFax 服务器的 LibraryDocuments 集合不是唯一的,您将收到错误消息。 (如果您想实际替换服务器上的文件,您可以改用 StoreAsLibraryDocumentUpdate()。)此外,请记住始终指定附件类型。

理论上,这应该是您真正需要做的所有事情:


'第一个传真:

fax.Attachments.Add(@"C:\\Test Attachments\\Products.pdf", BoolType.False);
fax.Attachments.Item(1).AttachmentType = AttachmentType.aFile;
fax.Send();
fax.StoreAsNewLibraryDocument("PRODUCTS", "The Products");
server.LibraryDocuments("PRODUCTS").IsPublishedForWeb = BoolType.True;

' 对于所有后续传真:

fax.Attachments.Add(server.LibraryDocuments("PRODUCTS"));
fax.Attachments.Item(1).AttachmentType = AttachmentType.aLibraryDocument;
fax.Send();

我之所以说“理论上”是因为这并不总是有效。有时当您调用 StoreAsNewLibraryDocument() 时,您最终会得到一个 PageCount 为零的 LibraryDoc。这似乎是随机发生的,可能是由于 RightFax 中的错误,或者可能是服务器配置错误。因此,检查...是一个非常好的主意。

server.LibraryDocuments("PRODUCTS").PageCount = 0

...在您发送任何后续传真之前,如有必要,请重试直到它起作用,或者(如果它不会)以其他方式存储 LibraryDoc 并放弃 StoreAsNewLibraryDocument()。

然而,如果您没有这个问题,您发送群发传真的时间通常是每次附加(和上传)本地文件所用时间的 1/10 左右。

如果来自 OpenText/RightFax 的人读到这篇文章并且可以解释为什么 StoreAsNewLibraryDocument() 有时会导致零页传真,那么对此的额外回答将不胜感激!

关于c# - RightFax C# 通过 RFCOMAPILib - 附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4664882/

相关文章:

c# - 如何比较数组中的值

c# - 如何检测 Control + 不是 VirtualKey 键盘组合?

java - 使用传真调制解调器调用电话

c# - RightFax 和 .NET?

.net - 如何生成传真并在代码中发送

css - 传真打印结果与计算机打印结果不同。

javascript - 如何防止模式弹出asp.net

c# - 如何为 appsettings.json 复杂数组使用选项模式