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:
Například Microsoft Office 2013/2016/2019 pro domácnosti a podnikatele tuto podporu nemá! |
Instalovanou podporu lze zkontrolovat přes
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:
-
.
-
Otevřete menu
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.
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:
-
Pro 32bitové aplikace Office na 64bitovém systému:
Pro oba typy aplikací pak pokračujte:
-
Zadejte klávesovou zkratku
. -
Otevřete menu
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.
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.
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>
).
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.
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.
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
) a poté 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.
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.