首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过RightFax C#通过RFCOMAPILib -附件

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

Stack Overflow用户
提问于 2011-01-12 02:42:01
回答 1查看 3.3K关注 0票数 2

我试图以一种高效的方式通过RightFax发送传真。

我的用户需要传真PDF,即使应用程序工作正常,它对于批量发送(> 20位收件人,每次传真花费40秒)来说非常慢。

代码语言:javascript
复制
// Fax created
fax.Attachments.Add(@"C:\\Test Attachments\\Products.pdf", BoolType.False);
fax.Send();

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

我可以在没有问题的情况下创建库文档(我可以检索它们等等),但是如何向其中添加PDF呢?(我在服务器上有权利。)

代码语言:javascript
复制
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:值不属于预期范围

代码语言:javascript
复制
fax.StoreAsNewLibraryDocument("PRODUCTS","the products");

对于我们来说,最重要的是如何通过RFCOMAPILib以最有效的方式发送例如500个传真。我认为如果我们能够重新使用所附的PDF文件,将会大大提高性能。显然,当您有数百个收件人时,40秒内发送传真是不可接受的。

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

EN

回答 1

Stack Overflow用户

发布于 2013-09-17 18:37:36

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

(不要像上面那样自己在服务器上创建LibraryDoc对象-只有当服务器上存在一个不是LibraryDocument的文件,并且希望将它变成一个文件时,您才会这样做。你可能永远不会遇到这样的情况。)

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

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

“第一份传真:

代码语言:javascript
复制
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;

“对于随后的所有传真:

代码语言:javascript
复制
fax.Attachments.Add(server.LibraryDocuments("PRODUCTS"));
fax.Attachments.Item(1).AttachmentType = AttachmentType.aLibraryDocument;
fax.Send();

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

代码语言:javascript
复制
server.LibraryDocuments("PRODUCTS").PageCount = 0

...before发送任何后续传真,如果有必要,请重试,直到它正常工作为止,或者(如果不能)以其他方式存储LibraryDoc并放弃StoreAsNewLibraryDocument()。

然而,如果你没有这个问题,你通常可以在每次附加(并上传)本地文件所需的十分之一的时间内发送大量的传真。

如果OpenText/RightFax的人读到了这篇文章,并能解释为什么StoreAsNewLibraryDocument()有时会产生零页传真,那么更多的答案将会非常感谢!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4664882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档