Ax2012 R3, Windows Server 2012 R2, Office 2013 (x32 или x64)
Вкратце, появилась необходимость в периодической операции, которая будет создавать документы Word на основе шаблонов и сохранять в PDF в указанном каталоге. Я в курсе, что MS не рекомендует серверную автоматизацию с использованием офиса и в качестве альтернативы, опять же, рекомендует Open XML SDK. Сходу не удалось найти нормального бесплатного способа затем отрендерить документ в PDF (может кто-то знает, поделитесь библиотекой), поэтому было решено использовать Microsoft.Office.Interop.Word, поверх которого была написана своя библиотека (из-за известных проблем с передачей параметров по ссылке).
На девелоперском окружении все заработало (проверял клиент/сервер, до пакета не дошло, т.к. CIL собрать нереально там).
На тестовом стенде начались проблемы при открытии файла шаблона, а именно в методе
X++:
Microsoft.Office.Interop.Word.Document.Documents.Add([ref object Template = Type.Missing], [ref object NewTemplate = Type.Missing], [ref object DocumentType = Type.Missing], [ref object Visible = Type.Missing]);
Метод из библиотеки-обертки на C#
PHP код:
public void newFile(string templateFileName,
Boolean visible = false,
Boolean newTemplate = false,
int documentType = 0)
{
System.Object oFileName = templateFileName;
System.Object oNewTemplate = newTemplate;
System.Object oDocumentType = documentType;
System.Object oVisible = visible;
if (app == null)
{
app = new Microsoft.Office.Interop.Word.Application();
}
app.Visible = visible;
doc = app.Documents.Add(ref oFileName, ref oNewTemplate, ref oDocumentType, ref oVisible);
}
- При выполнении кода на сервере:
- указав сетевой путь, вида «\\server-name\pk\test.docx» - пишет, что файл не найден, не существует или перемещен
- указав сетевой путь через IP, вида «\\127.0.0.1\pk\test.docx» - пишет, что файл не найден, не существует или перемещен
- указав локальный путь, вида «C:\Tmp\test.docx» - пишет, что файл поврежден, попробуйте восстановить
- При выполнении кода на клиенте, НО под той же учетной записью, под которой крутится АОС и на той же машине
- указав сетевой путь, вида «\\server-name\pk\test.docx» - пишет, что не удалось открыть банк макросов
- указав сетевой путь через IP, вида «\\127.0.0.1\pk\test.docx» - пишет, что файл не найден, не существует или перемещен
- указав локальный путь, вида «C:\Tmp\test.docx» - все работает
Всевозможные манипуляции с правами на каталоги и настройка политик безопасности внутри Word ничего не дали (за исключением пункта 2.1, все работает, при условии добавления пути в Доверенные местоположения Word’a). Учетную запись АОСа включили в группу администраторов, версии Word пробовали как 32-х, так и 64-х разрядные, ошибки те же.
По поводу банка макросов нашел
https://support.microsoft.com/en-us/kb/224338
Но не совсем понял, как настроить без добавления в группу администраторов. В DCOMCNFG есть Microsoft Excel Appliaction, но нет Ворда (есть непонятный Документ Microsoft Word 97–2003).
После того, как на девелоперском переустановили Office, работать там тоже перестало, ошибки те же.
В общем, может кто-то сталкивался и знает, почему он упорно пишет, что файл не существует. Или другой адекватный способ сохранения в PDF без Word.