我试图以一种高效的方式通过RightFax发送传真。
我的用户需要传真PDF,即使应用程序工作正常,它对于批量发送(> 20位收件人,每次传真花费40秒)来说非常慢。
// Fax created
fax.Attachments.Add(@"C:\\Test Attachments\\Products.pdf", BoolType.False);
fax.Send();RightFax有*Library Documents的概念,所以我认为我们可以做的是将一个PDF文档存储在服务器上,然后再重用它,所以不需要为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以最有效的方式发送例如500个传真。我认为如果我们能够重新使用所附的PDF文件,将会大大提高性能。显然,当您有数百个收件人时,40秒内发送传真是不可接受的。
我们如何通过API以最有效的模式发送带有附件的传真?
发布于 2013-09-17 18:37:36
StoreAsNewLibraryDocument()是使用RightFax COM API存储LibraryDocuments的唯一实用方法,但假设您没有使用预先存在的LibraryDocument,则必须在发送第一个传真后立即调用该函数,该传真将具有一个常规文件(而不是LibraryDoc)附件。
(不要像上面那样自己在服务器上创建LibraryDoc对象-只有当服务器上存在一个不是LibraryDocument的文件,并且希望将它变成一个文件时,您才会这样做。你可能永远不会遇到这样的情况。)
然后,通过指定为LibraryDocument ()的第一个参数的ID字符串(在随后的传真附件中)引用新的StoreAsNewLibraryDocument()。如果该ID不是RightFax服务器的LibraryDocuments集合的唯一ID,您将得到一个错误。(如果要实际替换服务器上的文件,可以使用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()时,会得到一个PageCount为零的LibraryDoc。这似乎是随机发生的,可能是由于RightFax中的一个bug,或者可能是服务器配置错误造成的。所以检查一下是个很好的主意。
server.LibraryDocuments("PRODUCTS").PageCount = 0...before发送任何后续传真,如果有必要,请重试,直到它正常工作为止,或者(如果不能)以其他方式存储LibraryDoc并放弃StoreAsNewLibraryDocument()。
然而,如果你没有这个问题,你通常可以在每次附加(并上传)本地文件所需的十分之一的时间内发送大量的传真。
如果OpenText/RightFax的人读到了这篇文章,并能解释为什么StoreAsNewLibraryDocument()有时会产生零页传真,那么更多的答案将会非常感谢!
https://stackoverflow.com/questions/4664882
复制相似问题