Konverze Microsoft Office

Konverze souborů ve formátech Microsoft Office vyžaduje:

  • Podporu pro převod pomocí programovatelných .NET rozhraní.

  • Doplňující nastavení oprávnění služby k jednotlivým COM objektům aplikací.

V případě, že podpora není nainstalována nebo oprávnění ke COM objektům nejsou nastavena, bude docházet k problémům při konverzi nativních formátů.

Chyba se projeví v odpovědi webové služby, např. jako výsledek 94 s hláškou „Načítání objektu třídy modelu COM pro komponentu s identifikátorem CLSID {000209FF-0000-0000-C000-000000000046} se nezdařilo kvůli následující chybě: 0x80004005“.)

CLSID se liší podle typu převáděného Office souboru.

Je nutné, aby nainstalovaná verze licence Microsoft Office poskytovala podporu pro:

  • Programovatelnost .NET rozhraní.

  • Visual Basic for Applications.

Například Microsoft Office 2013/2016/2019 pro domácnosti a podnikatele tuto podporu nemá!

Instalovanou podporu lze zkontrolovat přes Ovládací panely  Programy  Programy a funkce následujícím postupem:

  • Vyhledat položku Microsoft Office <version> a v ní zvolit Změnit.

  • Otevře se okno Změna instalace produktu Microsoft Office <version>, zde kliknout na první volbu Přidat či odebrat součásti a pak kliknout na Pokračovat.

  • Rozkliknout postupně jednotlivé aplikace – Microsoft Excel/Powerpoint/Word, kde u každé musí být nainstalována Podpora programovatelnosti .NET rozhraní. Pokud není (červený křížek), tak u dané volby kliknout na možnosti (šipka dolů) a vybrat „Spouštět z tohoto počítače“.

  • Rozkliknout také Nástroje systému Office, kde rovněž musí být nainstalována Podpora programovatelnosti akcí v rozhraní .NET. Pokud není (červený křížek), tak u dané volby kliknout na možnosti (šipka dolů) a vybrat „Spouštět z tohoto počítače“.

  • Nakonec u možnosti Sdílené součástí systému Office musí být nainstalována podpora Visual Basic for Applications. Pokud není (červený křížek), tak u dané volby kliknout na možnosti (šipka dolů) a vybrat „Spouštět z tohoto počítače“.

Nastavení COM objektů Microsoft Office aplikací

Konfiguraci oprávnění pro přístupnost ke COM objektům Microsoft Office aplikací je možné provést několika způsoby.

Dávkový způsob nastavení (DCOMPERM)

Prvním způsobem nastavení je použití dávkového souboru, který využívá komponenty DCOMPERM. Tento soubor je součástí Microsoft Windows SDK a ke stažení i s návodem na adrese: https://az.602.cz/datainc/SecuSign/download/dcomperm.zip.

Ruční způsob nastavení (Konzole MMC)

Druhým způsobem je ruční nastavení přes konzoli služby komponent. Jako příklad je zde uvedena konfigurace objektu Microsoft Word Document.

Postup je shodný i pro ostatní aplikace ze skupiny MS Office a zde uvedené ukázky platí pro MS Windows Server 201x.

Konzoli služby komponent spusťte následujícím způsobem:

  • Start  Spustit  dcomcnfg  OK.

  • Otevřete menu Služba Komponent  Počítače  Můj počítač a klikněte na záložku Konfigurace DCOM (neotvírejte ji, jenom označte). Nahoře vyberte tlačítko Podrobnosti a v pravém menu se objeví seznam jako na obrázku.

  • Vyberte příslušnou aplikaci.

image4

Pokud aplikace, kterou chcete nastavit, není v seznamu zobrazena, najdete ji následujícím způsobem:

  • Pro 64bitové aplikace Office na 64bitovém systému nebo 32bitové aplikace Office na 32bitovém systému:

    Start  Spustit  mmc

  • Pro 32bitové aplikace Office na 64bitovém systému:

    Start  Spustit  mmc -32

Pro oba typy aplikací pak pokračujte:

  • Zadejte klávesovou zkratku Ctrl+M  vlevo vyberte položku Služba Komponent  Přidat  OK.

  • Otevřete menu Služba Komponent  Počítače  Můj počítač a klikněte na záložku Konfigurace DCOM (stačí jen označit). Nahoře vyberte tlačítko Podrobnosti a v pravém menu se objeví seznam jako na obrázku.

  • Vyberte příslušnou aplikaci.

DCOM objekt aplikace Word se jmenuje Dokument aplikace Microsoft Office Word 97- 2003 (anglicky Microsoft Word 97- 2003 Document). Pokud není tento objekt k dispozici, zřejmě ještě nebyl zaregistrován. Obvykle postačí spustit aplikaci Microsoft Word a ukončit ji, poté restartovat server. Pokud ani po restartu serveru není objekt zobrazený, zbývá možnost ho vyhledat v registrech podle CLSID aplikace Word. Úpravy by se pak týkaly DCOM objektu s tímto CLSID.

image5

Pro správné fungování konverzních služeb je potřeba nastavit identitu pro danou aplikaci Office na stejný účet, pod kterým běží webová služba Long-Term Docs nebo pod kterým běží aplikační pool v IIS. V případě, že změníte účet u webové služby nebo u aplikačního poolu v IIS, je potřeba změnit také všechny účty u příslušných DCOM objektů aplikací Office.

image6
Tímto nastavením se změní identita procesu pro všechny uživatele počítače. Aplikaci je proto doporučeno instalovat a používat jako software dedikovaný pro Long-Term Docs.

Pro webovou službu je nutné u každého DCOM objektu MS Office aplikace v záložce Zabezpečení přidat Spouštěcí a aktivační oprávnění a Přístupová oprávnění pro účty IIS_IUSRS a IUSR (nebo IIS AppPool\<nazev_aplikacniho_poolu>).

image7

U Spouštěcích a aktivačních oprávnění nastavte oběma IIS účtům (popř. aplikačnímu poolu) právo na Místní spouštění a Místní aktivaci a nastavení uložte tlačítkem OK.

image8

Pro Přístupová oprávnění nastavte oběma IIS účtům (popř. aplikačnímu poolu) právo na Místní spouštění a nastavení uložte tlačítkem OK.

image9

Známé problémy

Error 11 (Conversion timeout after 60s), Error 14 (), Work_Thread didn’t finish in set Timeout (60s)

V případě, že se při konverzi TestConvertFile nebo ConvertFile/ConvertFileEx vrací uvedené chyby, pak příčin může být několik:

  • U aplikačního poolu LTD ve Správci IIS není nastaven LoadUserProfile=True.

  • Uživatel, pod kterým se spouští aplikační pool LTD a COM objekty aplikací MS Office, nebyl na Windows server přihlášen.

  • Uživatel, pod kterým se spouští aplikační pool LTD a COM objekty aplikací MS Office, nespustil žádnou MS Office aplikaci, díky čemuž se nevytvořil záznam v jeho profilu.

  • Po spuštění MS Office aplikace pod tímto uživatelem se zobrazují dialogy, které brání provedení konverze.

Projděte výše uvedené příčiny a proveďte odpovídající nastavení i konfigurace produktů Office.

Exception from HRESULT: 0x800A03EC, Error 103 ()

Pokud ani po nastavení přístupových práv ke COM objektům aplikací MS Office nelze provést konverzi těchto formátů a v odpovědi služby ConvertFile, ConvertFileEx nebo TestConvertFile se vrací:

Exception occured during converting, error: 'System.Runtime.InteropServices.COMException (0x800A03EC): Aplikace Microsoft Excel nemůže získat přístup k souboru C:\Program Files\Software602\Long-Term Docs SDK\TestFiles\Convert_xls.xls.

Příčiny mohou být následující:

  • Název souboru nebo cesta neexistuje.

  • Soubor je používán v jiném programu.

  • Sešit, který chcete uložit, má stejný název jako aktuálně otevřený sešit.

Případně pokud se vrací:

Error 103 ()

Může pomoci:

  • Vytvoření složky desktop v umístění

    • (pro 64bit Office) C:\Windows\System32\config\systemprofile\desktop

    • (pro 32bit Office) C:\Windows\SysWOW64\config\systemprofile\desktop

  • Přihlášení na serveru pod uživatelem, pod jehož identitou se spouští COM objekt Office aplikace a aplikační pool LTD.

    • Důvodem je to, že ještě nemá na serveru vytvořený uživatelský profil = nikdy nebyl přihlášen. Aplikační pool je (a má být) totiž nastaven na LoadUserProfile=True, tedy načítá profil uživatele.

  • Ověřit a spustit Windows Službu pro zařazování tisku:

    • Win+R (nebo Start  Spustit) a poté services.msc  Spooler (služba pro zařazování tisku)  pravé tlačítko  Vlastnosti  Spustit a případně nastavit Typ spouštění na Automaticky > potvrdit OK.

Po provedení uvedených bodů lze funkčnost konverze ověřit spuštěním aplikace MS Excel a exportem nového souboru (tabulky), obsahujícím libovolný znak, do formátu PDF.

Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)

Pokud po nastavení přístupových práv ke COM objektům se při volání konverze MS Office formátů vrací v odpovědi služeb ConvertFile, ConvertFileEx nebo TestConvertFile:

Error 94 (Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE))

Může být příčinou právě nastavení práv ke COM objektům. V případě konverze skrze Office 365 (Pro/Pro Plus) je potřeba u všech COM objektů aplikací Office změnit Identitu na Interaktivní uživatel.

image10

Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)

Pokud při konvertování dokumentu MS Office do formátu PDF/A dochází k této chybě:

The message filter indicated that the application is busy. (Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))

je zapotřebí zkontrolovat, zda je na aplikačním poolu LTD v IIS nastaveno Načtení profilu uživatele (Load User Profile) na true. Pokud není, pak je třeba nastavit.

Exception from HRESULT: 0x8000401A

Pokud při provádění konverze dokumentu MS Office do formátu PDF/A dochází k této chybě:

Error (Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 8000401a The server process could not be started because the configured identity is incorrect. Check the username and password. (Exception from HRESULT: 0x8000401A).)

je zapotřebí zkontrolovat, zda je na aplikačním poolu LTD v IIS zvolena správná Identita, resp. zadané správné uživatelské jméno a heslo. K uvedené chybě může dojít např. po změně hesla uživatele Windows/AD, a tudíž je třeba změnit původní heslo na nové i u aplikačního poolu LTD.

Množení procesů DllHost.exe

Pokud po konverzi dokumentů MS Office do formátů PDF či PDF/A dochází k množením procesů:

C:\Windows\system32\DllHost.exe /Processid:\{3EB3C877-1F16-487C-9050-104DBCD66683}

a neukončují se, pak může být řešením přeinstalace produktu Microsoft Office.