Преобразование документа Word с помощью PDFTron (Convert.ToPdf) приводит к ошибке «Не удалось получить дескриптор отправки для открытого документа» - PullRequest
0 голосов
/ 02 октября 2018

У меня установлен офисный стандарт 2016 с действующей лицензией, установленной на Windows Server 2016 (64-разрядная версия) и PdfTron (32-разрядная версия). Я пытаюсь преобразовать текстовый документ в pdf через PdfTron и его виртуальный принтер с помощью метода Convert.ToPdf (), приведенного ниже.код

try
            {
                string conversionPath = string.Empty;
                using (pdftron.PDF.PDFDoc pdfdoc = new pdftron.PDF.PDFDoc())
                {
                    if (pdftron.PDF.Convert.RequiresPrinter(sourceFilePath))
                    {
                        if (pdftron.PDF.Convert.Printer.IsInstalled("PDFTron PDFNet"))
                        {
                            pdftron.PDF.Convert.Printer.SetPrinterName("PDFTron PDFNet");
                        }
                        else
                        {
                            pdftron.PDF.Convert.Printer.Install();
                            pdftron.PDF.Convert.Printer.SetPrinterName("PDFTron PDFNet");
                        }
                    }
                    conversionPath = System.IO.Path.ChangeExtension(sourceFilePath, ".pdf");
                    pdftron.PDF.Convert.ToPdf(pdfdoc, sourceFilePath);
                    pdfdoc.Save(conversionPath, pdftron.SDF.SDFDoc.SaveOptions.e_linearized);
                    System.IO.File.Delete(sourceFilePath);
                }
                return conversionPath;
            }
            catch (pdftron.Common.PDFNetException ex)
            {
                return string.Empty;
            }
        }

, когда я пытаюсь это сделать, выдает ошибку ниже.

    Exception: 
     Message: An error occurred while converting the file.
Detailed error:
    Exception: 
     Message: Failed to obtain dispatch handle to opened document.
      File: "Word.cpp":646
    Log:
      Start check system account.
      Session ID is: 0.
      Done checking system account.
      Start checking registry.
      Registry check done.
      Creating a Word application instance.
      Word application instance created.
      Application.AutomationSecurity ID obtained.
      Application.AutomationSecurity value set to 3.
      Application.DisplayAlerts ID obtained.
      Application.Version ID obtained.
      Application version: 16.
      Application.Build ID obtained.
      Application build: 16.0.4266.
      Application.Documents ID obtained.
      Opening document "XXXXXX".
      Documents.Open ID obtained.

     Conditional expression: FALSE
     Version    : 6.8.7.67376
     Filename   : Convert.cpp
     Function   : trn::PDF::Convert::ToPDFViaOffice
     Linenumber : 1788

Failed to obtain dispatch handle to opened document.
      File: "Word.cpp":646
    Log:
      Start check system account.
      Session ID is: 0.
      Done checking system account.
      Start checking registry.
      Registry check done.
      Creating a Word application instance.
      Word application instance created.
      Application.AutomationSecurity ID obtained.
      Application.AutomationSecurity value set to 3.
      Application.DisplayAlerts ID obtained.
      Application.Version ID obtained.
      Application version: 16.
      Application.Build ID obtained.
      Application build: 16.0.4266.
      Application.Documents ID obtained.
      Opening document "XXXXXXX".
      Documents.Open ID obtained.

     Conditional expression: false
     Version    : 6.8.7.67376
     Filename   : Convert.cpp
     Function   : trn::PDF::Convert::ToPdf
     Linenumber : 1734

Я не совсем уверен, что это значит, так как PDFTron и офис имеют действительные лицензионные ключи, любыепомощь будет высоко ценится

1 Ответ

0 голосов
/ 11 октября 2018

Во-первых, я бы рекомендовал максимально ослабить учетные данные учетной записи, сделав их максимально приближенными к обычному пользователю.После того, как конвертация работает правильно, вы можете начать ограничивать.

Ниже приведен основной контрольный список, который вы должны обеспечить работу.

  1. MS Word лицензирован / активирован, особеннодля используемой учетной записи.Мы рекомендуем вам создать Службу Windows и запустить преобразование в отдельном процессе.Затем запустите службу как пользователь, который является администратором и имеет права на запуск службы.Кроме того, пользователь, который запускает службу, должен был принять лицензию MS Office, чтобы убедиться, что Office является полностью лицензированным продуктом.

  2. Убедитесь, что служба Print Spool запущена.Для многих версий Windows вы можете включить диспетчер очереди печати, выполнив в командной строке следующее: net start spooler

  3. Убедитесь, что у учетной записи, выполняющей преобразование, есть доступ к папке на рабочем столе.Папки рабочего стола локальной системы или локальной службы можно найти в следующих местах: C:\Windows\System32\config\systemprofile\Desktop C:\Windows\SysWOW64\config\systemprofile\Desktop (только в 64-разрядной версии Windows) Эти папки должны существовать, а используемой учетной записи необходимо прочитать /доступ к ним для записи.

...