2011-01-12 64 views
2

我试图以有效的方式通过RightFax发送传真。RightFax C#通过RFCOMAPILib - 附件

我的用户需要传真PDF,即使应用程序工作正常,但对于批量发送(> 20个收件人,每个传真需要40秒)速度非常慢。

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

的RightFax有*库文档,所以我认为我们可以做的是存储PDF文件作为服务器上的库文件,然后重新使用这个概念,所以没有需要上传这个PDF用于n个用户。

我可以创建没有问题的库文档(我可以检索它们等),但是如何为此添加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:值没有什么重要的我们是如何发送使用通过RFCOMAPILib的API说500页的传真在最有效的方式的预期范围

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

内。我认为,如果我们可以重用 PDF附件,它会大大提高性能。显然,当您有数百个收件人时,在40秒内发送传真是不可接受的。

我们如何通过API以最高效的模式发送带有附件的传真?

+0

这是一个非常基本的技术限制。传真机通过电话线工作,信号传输速度最好是14.4 kbps。假设通过电子邮件选择垃圾邮件方式,您可以获得10 Mbps或更高的互联网速度。 – 2013-01-05 16:37:46

回答

1

StoreAsNewLibraryDocument()是使用RightFax COM API存储LibraryDocuments的唯一实用方法,但假设您没有使用预先存在的LibraryDocument,则必须在发送第一个传真后立即调用该函数,一个常规文件(不是 LibraryDoc)附件。 (不要在服务器上自己创建一个LibraryDoc对象,就像你上面所做的那样 - 只有在服务器上有一个不是LibraryDocument的现有文件时,才会这样做,并且您希望使其成为)

然后通过您指定为StoreAsNewLibraryDocument()的第一个参数的ID字符串引用新LibraryDocument(在随后的传真附件中)。如果该ID不是唯一的RightFax服务器的LibraryDocuments集合,你会得到一个错误。 (如果要实际替换服务器上的文件,则可以使用StoreAsLibraryDocumentUpdate()。)另外,请始终指定AttachmentType。

从理论上讲,这应该是你真正需要做的:


'第一传真:

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()您最终获得具有零页页次一个LibraryDoc。这似乎是随机发生的,可能是由于RightFax中的错误,或者可能是服务器配置错误导致的。所以这是一个非常好的主意来检查......

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

...你发送任何后续的传真之前,并在必要时重试,直到它的工作原理,或者(如果它不会)存储LibraryDoc以某种方式放弃StoreAsNewLibraryDocument()。

然而,如果不存在这样的问题,你通常可以在当你连接所花费的时间大约为1/10,每次发送大量传真(和上传)的本地文件。

如果从OpenText公司/ RightFax的一些人读这一点,可以解释为什么StoreAsNewLibraryDocument()有时会导致零页的传真,关于额外的答案将是相当的欣赏!