RightFax C# через RFCOMAPILib - Вложения

Я пытаюсь отправить факсы через RightFax эффективным способом.

Моим пользователям нужно отправлять факсы в 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: значение не попадает в ожидаемый диапазон

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

Для нас важно то, как отправить, скажем, 500 факсов наиболее эффективным способом, используя API через RFCOMAPILib. Я думаю, что если мы сможем повторно использовать прилагаемый PDF, это значительно улучшит производительность. Очевидно, что отправка факса за 40 секунд недопустима, если у вас есть сотни получателей.

Как мы отправляем факсы с вложениями в наиболее эффективном режиме через API?

1 ответ

StoreAsNewLibraryDocument() - это единственный практический способ хранения LibraryDocuments с использованием RightFax COM API, но, если вы не используете ранее существующий LibraryDocument, вам нужно вызывать функцию сразу после отправки первого факса, который будет иметь обычный файл (не LibraryDoc) вложение.

(Не создавайте объект LibraryDoc на сервере самостоятельно, как вы делали выше - вы сделаете это только в том случае, если на сервере есть существующий файл, который не является библиотечным документом, и вы хотите превратить его в один. Наверное, никогда не столкнусь с таким сценарием.)

Затем на новый LibraryDocument ссылаются (в последующих факсах) на строку идентификатора, указанную в качестве первого аргумента StoreAsNewLibraryDocument(). Если этот идентификатор не уникален для коллекции LibraryDocuments сервера RightFax, вы получите сообщение об ошибке. (Вместо этого вы можете использовать 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, равным нулю. Это происходит на первый взгляд случайным образом и, вероятно, связано с ошибкой в ​​RightFax или, возможно, с неправильной настройкой сервера. Так что это очень хорошая идея, чтобы проверить...

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

... перед отправкой любого из последующих факсов и при необходимости повторите попытку, пока он не заработает, или (если это не удастся) сохранить LibraryDoc каким-либо другим способом и отказаться от StoreAsNewLibraryDocument().

Принимая во внимание, что если у вас нет такой проблемы, вы обычно можете отправить массовый факс примерно в 1/10 от времени, когда вы каждый раз прикрепляете (и загружаете) локальный файл.

Если кто-то из OpenText/RightFax прочитает это и сможет объяснить, почему StoreAsNewLibraryDocument() иногда приводит к факсам с нулевой страницей, дополнительный ответ по этому поводу был бы весьма полезен!

Другие вопросы по тегам