Tisk a generování souborů ve výpočtech

Výpočet úkolu umí vygenerovat tiskovou sestavu do PDF, sloučit nebo zkonvertovat soubory, přiložit je k případu a číst či upravovat přílohy v DMS. Tento článek shrnuje funkce pro práci se soubory a tisky dostupné v TAS 5.19.12 – z knihovny lib i ze samostatných objektů storage, zip a excel. Obecné funkce lib jsou v článku Reference API výpočtů: knihovna lib, tiskové šablony samotné popisuje administrátorský článek Tiskové šablony.

Generování tisku do DMS

FunkcePopis
lib.savePrintForm(id, docType, fileName?)Vytvoří tiskovou sestavu id ve formátu docType ('pdf', 'html' nebo 'doc') a uloží ji jako přílohu do DMS.
lib.printToFantomPdf(printName, fileName, forceNewPrint=false)Vytvoří PDF tiskové sestavy a uloží do DMS; forceNewPrint=true vynutí vykreslení přes Puppeteer (nové tisky typu Tisk – React).
// Po schválení objednávky vygeneruje finální PDF a přiloží ho k případu
await lib.printToFantomPdf('Purchase order confirmation', 'PO-' + vars['OrderNumber'].getValue() + '.pdf');

Konverze a úprava souborů

FunkcePopis
lib.libreConvert(srcFile, outFile, filter?)Zkonvertuje soubor na disku přes LibreOffice (musí být na serveru nainstalován), např. .doc → .pdf.
lib.libreConvertDmsFile(fileVariable, outFormat='pdf', filter?)Totéž, ale zdrojem je proměnná typu příloha; výsledek se vrátí/přiloží podle implementace šablony.
lib.libreMacroConvert(srcFile, outFile, macro) / libreMacroConvertDmsFile(fileVariable, outFormat, macro)Konverze s vlastním LibreOffice makrem.
lib.pdfToText(fileName)Převede obsah PDF souboru na text.
lib.modifyPdfAddImage(identifier, pngPath, newFile=false, options)Vloží PNG obrázek (např. razítko, QR kód z lib.createQrCodeBase64) do existujícího PDF; options určují stránku, pozici (x, y), měřítko a otočení. Bez newFile se obrázek přidá jako revize stávajícího souboru.
lib.setDocumentLogicalType(fileName, logicTypeKey)Změní logický typ dokumentu (viz číselník typů dokumentů v administraci DMS).
lib.getFileType(fileName)Vrátí typ souboru podle přípony (tabulka DMS_FILE_TYPE).
lib.translateFileTemplate(srcFile, outFile)Nahradí proměnné v textovém souboru a uloží výsledek do jiného souboru.
lib.zfoLinkAttachments(id, nameProp?, contentProp?)Rozbalí soubory vložené uvnitř .zfo souboru a přiloží je k případu; vrátí jejich ID oddělená čárkou.
lib.xmlGetContents(id)Vrátí obsah XML souboru uloženého v DMS.
await lib.libreConvert('/tmp/uploads/quote.docx', '/tmp/uploads/quote.pdf', 'writer_pdf_Export');

Slučování PDF a práce s přílohami případu

FunkcePopis
lib.dmsMergePdfs(inFileNames, outFileName, isOrdered=false)Sloučí vybrané PDF soubory případu do jednoho; isOrdered=true zachová pořadí podle pole inFileNames.
lib.storeAttachment(fileName, content, convertToBase64=true, lastRevisionId?)Uloží nový soubor do DMS a vrátí jeho ID.
lib.storeAttachmentAsRevision(fileName, content, convertToBase64, revisionFileName)Uloží soubor jako novou revizi existujícího souboru revisionFileName.
lib.exportAttachment(identifier, exportPath, encoding='binary')Zkopíruje přílohu případu na absolutní cestu na disku serveru.
lib.copyFile(srcPath, dstPath) / lib.moveFile(fromPath, toPath)Zkopíruje/přesune soubor na disku (mimo DMS); moveFile přepíše existující cíl.
lib.addPublicFileToAttachment(publicFileName, dmsAttachmentName)Přiloží veřejný soubor (z konfigurované veřejné složky) k případu jako přílohu.
lib.addMailNotifsAttachment(dmsfName)Přidá soubor z DMS jako přílohu úkolu typu e-mailové upozornění.
lib.copySharedFileLink(iprocId, varName)Zkopíruje do aktuálního případu odkaz na soubor ze sdílené proměnné typu Seznam dokumentů jiného případu.
lib.getDMSFiles(nameFilter='*', glue='|', attrNames?) / getDMSFileNames(...) / getDMSFileIds(...)Najdou přílohy případu podle filtru jména (* = všechny) a vrátí zadané atributy, jména, resp. ID spojené znakem glue.
lib.countFiles(variable)Počet souborů v proměnné typu příloha (hodnoty oddělené :).
lib.getFileContents(pathToFile, encoding='base64')Obsah souboru z absolutní cesty na disku (složka musí být povolená v konfiguraci).
const quotePdf = await lib.dmsMergePdfs(['quote-1.pdf', 'quote-2.pdf'], 'quote-combined.pdf', true);
await lib.addMailNotifsAttachment('quote-combined.pdf');

storage – DMS a soubory na disku

Objekt storage je nižší úrovně než výše uvedené funkce lib a pracuje přímo s entitami DMS a se souborovým systémem.

MetodaVracíPopis
saveToDms(filePath, fileName)Promise<number | undefined>Uloží soubor z disku jako přílohu případu do DMS, vrátí jeho ID.
getDmsEntityByName(dmsfName, searchRevisions=false)Promise<DmsFile | null>Najde soubor podle jména v rámci aktuálního případu.
getFromSubAndMainByName(name, searchRevisions=false)Promise<DmsFile | null>Totéž, ale hledá i v podprocesech a hlavním případu.
getDmsContent(id, encoding)Promise<string | Buffer>Obsah souboru z DMS.
getDmsAbsolutePath(id)stringAbsolutní cesta souboru na disku serveru.
exportDmsFile(id, destination)–Zkopíruje soubor z DMS do zvolené složky.
dmsFileExists(id) / fileExists(file)Promise<boolean>Ověří existenci DMS souboru, resp. souboru/složky na disku.
dmsDeletePermanently(id)–Trvale smaže soubor z DMS.
getAttachmentsSize(ids)–Velikost souboru/souborů v bajtech.
createDir(folder) / removeFolder(dir) / copyDir(dirName, newDirName)–Práce se složkami na disku serveru.
getDmsFolder(folderName, parentFolderId?) / createDmsFolder(...) / setDmsFileFolder(id, folderName, parentId?)–Práce se složkami (DMS tagy) uvnitř DMS.
getCsvFile(filename, options?)Promise<object[]>Načte uložený .csv soubor jako pole objektů.
setDmsTagValue(tagId, value, files=[])Promise<void>Nastaví hodnotu DMS atributu (tagu) pro zadané dokumenty.
const path = storage.getDmsAbsolutePath(vars['Quote'].getValue());
await lib.libreConvert(path, path.replace('.docx', '.pdf'));

zip – archivy

MetodaPopis
zip.addDmsFile(dmsfId) / addDmsFiles(dmsfId[])Přidá jeden nebo víc souborů z DMS do rozpracovaného zip archivu.
zip.storeZip()Uloží archiv do dočasné složky a vrátí cestu k němu (getTempFilePath()).
zip.getTempFilePath() / getRandomTempFileName()Cesta k aktuálnímu, resp. nový náhodný dočasný soubor.
zip.clearTemp()Smaže dočasný archiv.
zip.unzipDmsFile(dmsFileId)Rozbalí zazipovaný soubor z DMS a jeho obsah přiloží k případu.
zip.gzip(data) / zip.gunzip(data)Komprimace/dekomprimace bufferu (gzip).
await zip.addDmsFiles(lib.getDMSFileIds('invoice-*').split('|').map(Number));
const zipPath = zip.storeZip();
await lib.storeAttachment('invoices.zip', await storage.getDmsContent(zipPath));

excel – sešity XLSX

MetodaPopis
excel.workbook()Nová prázdná instance sešitu.
excel.jsonToSheet(data, options?)Vytvoří list z pole objektů (JSON).
excel.appendWorksheet(workbook, worksheet, name)Přidá list do sešitu pod zadaným názvem.
excel.setCell(worksheet, origin='A1', cellValue)Nastaví hodnotu konkrétní buňky (např. {t: 's', v: 'Celkem'}).
excel.writeToFile(workbook, fileName, options?)Uloží sešit do souboru na disku.
excel.writeToDms(workbook, fileName, options?)Uloží sešit do dočasného souboru a rovnou ho přiloží k případu v DMS.
excel.read(data, options) / readFile(filePath, options) / fromData(...) / fromFile(...)Načtou existující XLSX ze dat/souboru do objektu sešitu.
excel.utils()Vrátí pomocné funkce knihovny xlsx (viz její dokumentace).
const rows = vars['Items'].getDR() ? JSON.parse(vars['Items'].getDR('itemName')) : [];
const sheet = excel.jsonToSheet(rows.map((name, i) => ({ item: name })));
const wb = excel.workbook();
excel.appendWorksheet(wb, sheet, 'Items');
await excel.writeToDms(wb, 'order-items.xlsx');

Související: Reference API výpočtů: knihovna lib, Tiskové šablony, Výpočty na úkolu.

Dokumenty ve výpočtech — kompletní průvodce

Vytvoření dokumentu DOCX

Team assistant (opens in a new tab)

Powered by HelpDocs (opens in a new tab)