==== Akce nad dokumenty v DMS ESO9 ====
=== Spojování PDF dokumentů ===
Ve formulářích s DMS lze použít akci na tlačítko, která provede spojení označených PDF dokumentů do jediného. Pokud je některý ze spojovaných PDF dokumentů otočen (např. špatným naskenováním), otočí se při spojování správně tak, aby výsledný dokument měl všechny stránky otočené stejně.\\
Formát příslušného tlačítka je:\\
=== Převod obrázku na PDF dokument ===
Ve formulářích s DMS lze použít akci na tlačítko, která provede převod uloženého dokumentu ve formátu bitmapového obrázku na formát PDF.\\
Formát příslušného tlačítka je:\\
=== Digitální podepisování dokumentů ===
Digitální podepsání PDF dokumentů lze v ESO9 snadno realizovat tlačítkem/akcí v libovolném formuláři s dokumenty. Před vlastní m podepisováním je třeba vložit podpisový certifikát (resp. certifikáty, každý uživatel může podepisovat dokumenty svým certifikátem) do činnosti //9.8.10 Certifikáty//. Poté je třeba vložit sériové číslo požadovaného certifikátu do aplikačního parametru //CERT_SN//. Tento parametr může pro různé uživatele nabývat různých hodnot; pokud tedy bude každý uživatel používat k podepisování svůj certifikát, je třeba založit parametr //CERT_SN// pro uživatele.\\
Podepisování pak bude reprezentování tlačítkem se syntaxí:\\
=== Digitální podepisování dokumentů formou stored procedury v databázi ===
Digitální podepsání PDF dokumentů je dostupné (kromě akce na tlačítko ve formuláři, viz výše) i formou stored procedury v aplikační databázi.\\
Syntaxe stored procedury je následující:\\
CREATE OR ALTER PROCEDURE dbo.SignPDF
@sInputFileGUID NVARCHAR(80)
,@iIDcert INT
,@MultipleSign BIT
,@sOutputFileName NVARCHAR(255)
,@iOutputDocumentID INT OUTPUT
,@Status INT OUTPUT
,@ErrorMessage NVARCHAR(MAX) OUTPUT
AS EXTERNAL NAME [PDFSign].[PDFSign].SignPDF
Významy jednotlivých parametrů:\\
* //@sInputFileGUID// - identifikátor vstupního (podepisovaného) PDF dokumentu z dokumentové databáze
* //@iIDcert//- ID certifikátu použitého pro digitální podpis.
* //@MultipleSign// - příznak, zda v případě již existujícího podpisu PDF dokument znovu podepsat dalším podpisem.
* //@sOutputFileName// - jméno podepsaného PDF dokumentu, který se zde zakládá. Pokud bude prázdné, vygeneruje se jméno souboru z původního + ".signed.pdf"
* //@iOutputDocumentID// - ID nově založeného podepsaného PDF dokumentu.
* //@Status// - výsledek volání: 0=OK, -1=chyba.
* //@ErrorMessage// - popis chyby.
Příklad podepsání PDF dokumentu stored procedurou:
DECLARE @InputPDFFileGUID NVARCHAR(80)
DECLARE @OutputPDFFileName NVARCHAR(255)
DECLARE @IDCert INT
DECLARE @MultipleSign BIT = 0
DECLARE @iOutputDocumentID INT = 0
DECLARE @Status INT = 0
DECLARE @ErrorMessage NVARCHAR(MAX)
-- GUID vstupního PDF souboru
set @InputPDFFileGUID = 'efa02085-d2fe-4c56-87c4-8799f581d18e'
-- jméno výstupního souboru - může být prázdné
set @OutputPDFFileName = ''
-- ID podepisovacího certifikátu
set @IDCert = 1
-- zavolání stored procedury
EXEC dbo.SignPDF
@InputPDFFileGUID,
@IDCert,
@MultipleSign,
@OutputPDFFileName,
@iOutputDocumentID OUTPUT,
@Status OUTPUT,
@ErrorMessage OUTPUT
-- kontrola výsledku
IF @Status = 0 -- OK
BEGIN
PRINT 'PDF signed successfully!'
PRINT 'ID = ' + CAST(@iOutputDocumentID AS NVARCHAR(10))
END
ELSE -- chyba
BEGIN
PRINT 'Error signing PDF: ' + ISNULL(@ErrorMessage, 'Unknown error')
PRINT 'Status code: ' + CAST(@Status AS NVARCHAR(10))
END
=== Ruční podepisování dokumentů ===
V ESO9 je možnost podepisovat PDF dokumenty podpisovým tabletem značky Wacom. Vývoj probíhal na modelu STU-430, podle dokumentace výrobce však lze se stejným SDK použít libovolný v současnosti podporovaný tablet řady STU.\\
Integrace sestává z klientské a serverové části a ovladače od výrobce (viz následující podkapitola). Klientská část je integrovaná ve službě //ESO9 Support Services// v1.6.0, serverová je pak součástí knihovny //ESO9Lib.dll// v6.8.0.4. \\
Podepisování se volá nad libovolným formulářem s dokumentem a je reprezentováno tlačítkem se syntaxí:\\
Tlačítko zobrazí výzvu uživatele k podepsání PDF dokumentu, počká na zapsání podpisu a vloží jej na dané místo v PDF dokumentu. Vkládání podpisu do dokumentu se pak řídí parametry v datovém zdroji formuláře:\\
* //' ' as MF_SIGNIMG// - obrázek podpisu v Base64 encodingu. Pomocí této datové položky si klient a server předávají obrázek s podpisem. Položku stačí tímto způsobem uvést v datovém zdroji a v HIDDEN parametrech formuláře.
* //360 as MF_XPOS, 200 as MF_YPOS// - souřadnice umístění podpisu v PDF dokumentu v případě, že jej umisťujeme uživatelsky/implementačně.
* //35 as MF_SIGNSCALE// - měřítko obrázku s podpisem v %, výchozí hodnota je 35%. Obrázek z tabletu má rozlišení 300x150 px, před vložením do PDF je zpravidla třeba jej zmenšit.
* //4 as MF_SIGNONPAGE// - na které stránky se má podpis vložit:
* 0 = na první,
* 1 = na poslední,
* 2 = na všechny,
* 3 = automaticky na 1.výskyt klíčového slova v dokumentu. V takovém případě se aplikace pokusí najít souřadnice požadovaného slova a obrázek s podpisem vložit na ně.
* 4 = automaticky na všechny výskyty klíčového slova v dokumentu, resp. každý 1.výskyt slova v každé stránce. Výchozí hodnota pro případ, že parametr není uveden.
* //'Podpis;podpis' as MF_KEYWORDS// - seznam klíčových slov, které se budou v dokumentu vyhledávat pro automatické umístění podpisu. Po nálezu prvního slova ze seznamu se na jeho pozici umístí obrázek s podpisem a pokračuje se další stránkou. Má význam pro hodnoty parametru //MF_SIGNONPAGE = 3/4//.
* //'Podpis dokladu č.' + '%CIS_DOK%' as MF_SIGNREASON// - důvod pro vložení podpisu se zobrazí na podpisovém tabletu uživateli tak, aby věděl, co podepisuje.
* //' ' as MF_SIGNUSER// - jméno podepisujícího uživatele se zobrazí na podpisovém tabletu.
Položky //MF_SIGNIMG//, //MF_SIGNREASON// a //MF_SIGNUSER// používá i klient, je tedy třeba je zadat i do hidden parametrů formy.
== WACOM SDK ==
Pro správnou funkci podepisovacího tabletu je zapotřebí jednorázová instalace SDK, která je k dispozici na instalačním mediu ESO9. Instalaci lze spustit běžným způsobem nebo bezdotykově z příkazové řádky:\\
msiexec /q MINIMAL=1 DOTNET=1 WIN32=0 /i Wacom-Signature-SDK-x64-4.7.7.msi
=== Optimalizace PDF dokumentů ===
Vzhledem ke stále rostoucí velikosti všech dokumentových databází jsme vytvořili automat na průběžnou optimalizaci PDF souborů uložených v DMS ESO9. Kompresní poměr původního a optimalizovaného PDF se pohybuje v rozmezí 1:2 - 1:10. Optimalizují se pouze PDF soubory bez digitálního podpisu; digitálně podepsané dokumenty zůstávají beze změny.\\
Automat se spouští cca 1x týdně a vždy zpracuje pouze dosud nezoptimalizované PDF dokumenty. Rychlost optimalizace je cca 500 dokumentů za minutu (záleží přitom na počtu jader počítače, na němž optimalizace běží).\\
V závislosti na dalších typech souborů uložených v DMS (Excelové sešity, obrázky, XML soubory) se velikost dokumentové databáze zmenší zhruba na polovinu.\\
\\
Cena optimalizace:\\
* 2Kč/MB jednorázově - první spuštění provede optimalizaci všech PDF dokumentů od počátku provozu dané aplikace ESO9. To zmenší dokumentovou databázi o určitý počet MB, od nějž se pak odvozuje cena prvotní optimalizace. Platí se jednorázově.
* 1Kč/dokument průběžně - optimalizace se následně spouští cca 1xtýdně (častěji je to zbytečné), přičemž se zoptimalizují jen dosud nezpracované PDF dokumenty (tj. pouze přírůstek od posledního spuštění). Počet zpracovaných dokumentů za jeden měsíc je potom podkladem pro cenu. Platí se pravidelně v měsíčních (popř. čtvrtletních) intervalech.
== Nápověda k automatu ==
Spouští se z příkazové řádky s parametry:\\
* db = pracovní databáze (může být s/bez přípony DOC)\\
* server = jméno SQL serveru\\
* countOptimized = 0/1 = pouze spočítat zoptimalizované dokumenty (1), nebo provést optimalizaci (0)\\
* fromDate = datum, od kterého počítám zoptimalizované dokumenty (pouze pro volbu countOptimized = 1)\\
* toDate = datum, do kterého počítám zoptimalizované dokumenty (pouze pro volbu countOptimized = 1); není-li zadán, bere se dnešní.\\
* user = uživatelský účet; pokud nebude zadán, použije se Windows účet, pod nímž je program spuštěn\\
* pwd = uživatelské heslo; pokud je zadán uživatelský účet, použije se heslo vždy; nebude-li zadáno, použije se prázdné\\
* profile = optimalizační profil, který se použije pro zpracování PDF. Defaultně 3 (není-li zadáno).\\
* 0 = Bez optimalizace.\\
* 1 = Optimalizace pro použití na webu.\\
* 2 = Optimalizace pro tisk.\\
* 3 = Maximální optimalizace (výchozí).\\
* 4 = MRC optimalizace (viz níže).\\
* 5 = Optimalizace pro archivaci.\\
MRC (Mixed Raster Content) optimalizace není vhodná pro budoucí OCR vytěžování! Poskytuje nejlepší výsledky za cenu nejnižší rychlosti (tj. trvá nejdéle).\\
Pokud si nejsme jisti, zda se výsledek optimalizace bude v budoucnu používat pro OCR, je lepší použít profil pro maximální optimalizaci (3).\\
\\
Příklad volání:\\
PDF_Tools_Compress.exe db=ESO9start server=DbSrv user=ESO9Login pwd=Heslo123 profile=4