Selaa lähdekoodia

set webpack setting and prepare for cert

Andrey Titovskiy 3 vuotta sitten
vanhempi
commit
4ed56fd298

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 3 - 3
build/index.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
build/index.js.map


+ 1 - 1
package.json

@@ -5,7 +5,7 @@
   "main": "./build/index.js",
   "scripts": {
     "build": "webpack --mode=production",
-    "start:dev": "webpack serve"
+    "start:dev": "webpack serve --mode=development"
   },
   "author": "Unicraft TEAM",
   "devDependencies": {

+ 140 - 0
src/branding.js

@@ -635,3 +635,143 @@ const handler = {
 };
 
 export const brandingMapping = new Proxy(brandingObject, handler);
+
+export function certTemplate(label) {
+
+
+  let certTemplateName;
+  let certWidth = "1090px";
+  let certHeight = "710px";
+  let certOrientation = "landscape";
+
+  switch (label) {
+    case '1marka':
+      certTemplateName = '1marka'
+      break;
+
+    case 'leobank':
+      certTemplateName = 'leobank'
+      break;
+
+    case 'kamatyres':
+      certTemplateName = 'kamatyres'
+      break;
+
+    case 'meest':
+      certTemplateName = 'meest'
+      break;
+
+    case 'twelvemonth':
+      certTemplateName = 'twelvemonth'
+      break;
+
+    case 'intex':
+      certTemplateName = 'intex'
+      break;
+
+    case 'uflor':
+      certTemplateName = 'uflor'
+      break;
+
+    case 'hanbuz':
+      certTemplateName = 'hanbuz'
+      break;
+
+    case 'zoopt':
+      certTemplateName = 'zoopt'
+      certWidth = "1500px";
+      certHeight = "1080px";
+      certOrientation = "landscape";
+      break;
+
+    case 'sptlab':
+      certTemplateName = 'sptlab'
+      certWidth = "1280px";
+      certHeight = "904px";
+      certOrientation = "landscape";
+      break;
+
+    case 'fpprt':
+      certTemplateName = 'fpprt'
+      certWidth = "1040px";
+      certHeight = "728px";
+      certOrientation = "landscape";
+      break;
+
+    case 'ordamed':
+      certTemplateName = 'ordamed'
+      certWidth = "1753px";
+      certHeight = "1240px";
+      certOrientation = "landscape";
+      break;
+
+    case 'nettle':
+      certTemplateName = 'nettle'
+      certWidth = "842px";
+      certHeight = "595px";
+      certOrientation = "landscape";
+      break;
+
+    case 'autoeuro':
+      certTemplateName = 'autoeuro'
+      certWidth = "842px";
+      certHeight = "595px";
+      certOrientation = "landscape";
+      break;
+
+    case 'ecrs':
+      certTemplateName = 'ecrs'
+      certWidth = "842px";
+      certHeight = "595px";
+      certOrientation = "landscape";
+      break;
+
+    case 'cdop':
+      certTemplateName = 'cdop'
+      certOrientation = "landscape";
+      break;
+
+    case 'smokingshop':
+      certWidth = "1280px";
+      certHeight = "905px";
+      certTemplateName = 'smokingshop'
+      certOrientation = "landscape";
+      break;
+
+    case 'transportir':
+      certHeight = "702px";
+      certWidth = "1092px";
+      certTemplateName = 'transportir'
+      certOrientation = "landscape";
+      break;
+
+    // Шаблон сертификата с двойным выводом
+    case 'unicraft_gray':
+      certTemplateName = 'unicraft-split'
+      break;
+
+    // Стандартный сертификат #2
+    case 'unicraft_orange':
+      certTemplateName = 'unicraft-v2'
+      break;
+
+    // Стандартный сертификат #1
+    default:
+      certTemplateName = 'unicraft-v1'
+      break;
+  }
+
+  const fileName = `./certificate/${certTemplateName}/index.html`
+  let certFileData;
+
+  // TODO: тут нужно получать файл и возвращать его далее на платформу
+  // readFile(
+  //   resolve(fileName),
+  //   "utf8",
+  //   (err, data) => {
+  //     console.log(data);
+  //     certFileData = data
+  //   });
+
+  return { certLog: `Cert ${fileName} for ${label}`, certWidth, certHeight, certOrientation, certFileData }
+}

+ 321 - 0
src/certificate/1marka/index.html

@@ -0,0 +1,321 @@
+<!doctype html>
+<html>
+
+<head>
+  <meta charset="UTF-8">
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    body,
+    html {
+      height: initial;
+      width: initial;
+      font-size: 13px;
+      line-height: 1.3;
+      -webkit-box-sizing: border-box;
+      box-sizing: border-box
+    }
+
+    body {
+      background: #fff;
+      font-weight: 400;
+      margin: 0;
+      padding: 0
+    }
+
+    * {
+      -webkit-box-sizing: inherit;
+      box-sizing: inherit
+    }
+
+    .cert {
+      font-family: UCfont, "Open Sans", Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif;
+      font-weight: 400;
+      font-size: 13px;
+      background-repeat: no-repeat;
+      background-position: center;
+      background-size: cover;
+      background-color: #fff;
+      display: block;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 2rem;
+      border: 1rem solid #2785ce;
+      padding: 4rem;
+      text-align: center;
+      position: relative;
+      height: 50rem;
+      width: 80rem
+    }
+
+    .cert p {
+      margin: .5em 0
+    }
+
+    .cert_logo {
+      position: absolute;
+      top: 4rem;
+      left: 4rem
+    }
+
+    .cert_logo img {
+      max-height: 100px;
+      max-width: 250px
+    }
+    
+    .cert_icons {
+      position: absolute;
+      top: 4rem;
+      right: 4rem
+    }
+
+    .cert_icons img {
+      max-height: 100px;
+      max-width: 450px
+    }
+
+    .cert_main {
+      position: absolute;
+      top: 45%;
+      left: 50%;
+      width: 80%;
+      -webkit-transform: translateY(-50%) translateX(-50%);
+      -ms-transform: translateY(-50%) translateX(-50%);
+      transform: translateY(-50%) translateX(-50%)
+    }
+
+    .cert_main p {
+      font-size: 1.1rem;
+      font-style: italic;
+      margin-top: .25em;
+      margin-bottom: .25em
+    }
+
+    .cert_company {
+      font-size: 1.25rem;
+      margin: 1rem;
+      white-space: pre
+    }
+
+    .cert_title {
+      font-size: 6.66667rem;
+      letter-spacing: 5px;
+      margin: 1rem;
+      text-transform: uppercase;
+      position: relative
+    }
+
+    .cert_title::after {
+      display: block;
+      content: "";
+      height: 1px;
+      width: 80%;
+      position: absolute;
+      bottom: 0;
+      left: 10%;
+      border-bottom: 1px solid #8c8c8c
+    }
+
+    .cert_student {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_course {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_comment {
+      color: #8c8c8c
+    }
+
+    .cert_details {
+      position: absolute;
+      bottom: 2rem;
+      left: 4rem;
+      color: #8c8c8c
+    }
+
+    .cert_details dd,
+    .cert_details dl,
+    .cert_details dt {
+      margin: 0;
+      padding: 0;
+      text-align: left;
+      letter-spacing: .025em
+    }
+
+    .cert_details dl {
+      padding: .5rem 0
+    }
+
+    .cert_details dd {
+      font-size: .85em
+    }
+
+    .cert_details dt {
+      font-size: 1.215em
+    }
+
+    .cert_sign {
+      position: absolute;
+      bottom: 2rem;
+      right: 4rem;
+      max-width: 50%;
+      text-align: right
+    }
+
+    .cert_sign_list {
+      display: -webkit-box;
+      display: -ms-flexbox;
+      display: flex;
+      -webkit-box-orient: horizontal;
+      -webkit-box-direction: normal;
+      -ms-flex-direction: row;
+      flex-direction: row;
+      -ms-flex-wrap: nowrap;
+      flex-wrap: nowrap;
+      max-width: none;
+      width: 50%;
+      -webkit-box-pack: end;
+      -ms-flex-pack: end;
+      justify-content: flex-end
+    }
+
+    .cert_sign_item {
+      width: 33%;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 0 10px
+    }
+
+    .cert_sign_info {
+      border-top: 1px solid #8c8c8c;
+      padding: .25rem;
+      font-size: .85em;
+      text-transform: uppercase;
+      color: #8c8c8c;
+      white-space: pre-line
+    }
+
+    .cert_sign_img {
+      padding: 5px
+    }
+
+    .cert_sign_img img {
+      height: 7rem;
+      max-width: 100%;
+      -o-object-fit: contain;
+      object-fit: contain;
+      -o-object-position: bottom;
+      object-position: bottom;
+      image-rendering: crisp-edges
+    }
+  </style>
+</head>
+
+<body>
+  <div class="cert" style="border-color: {{BORDER_COLOR}}">
+    <div class="cert_logo">
+      <img src="https://dd.unicraft.org/static/branding/1marka/cert_custom/logo.png">
+    </div>
+    <div class="cert_icons">
+      <img src="https://dd.unicraft.org/static/branding/1marka/cert_custom/icons.png">
+    </div>
+    <div class="cert_main">
+      <!-- <div class="cert_company">{{COMPANY}}</div> -->
+      <div class="cert_title">{{CERT_TITLE}}</div>
+      <p>{{CERT_INTRO}}</p>
+      <div class="cert_student">
+        {{STUDENT}}
+      </div>
+      <p>{{CERT_COMPLETE_COURSE}}</p>
+      <div class="cert_course">
+        {{COURSE}}
+      </div>
+    </div>
+    <div class="cert_details">
+      <dl>
+        <dd>{{CERT_DATE_START}}</dd>
+        <dt>{{START}}</dt>
+      </dl>
+      <dl>
+        <dd>{{CERT_DATE_END}}</dd>
+        <dt>{{END}}</dt>
+      </dl>
+    </div>
+    <div class="cert_sign" {{SIGN_HIDE}}>
+      <div class="cert_sign_img">
+        <img src="{{SIGN_IMG}}">
+      </div>
+      <div class="cert_sign_info">{{SIGN_DESCR}}</div>
+    </div>
+  </div>
+</body>
+
+</html>

+ 166 - 0
src/certificate/autoeuro/index.html

@@ -0,0 +1,166 @@
+<!DOCTYPE html>
+<html lang="ru">
+
+<head>
+  <meta charset="UTF-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Certificate</title>
+
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    html,
+    body {
+      padding: 0;
+      margin: 0;
+      font-family: 'UCfont', 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
+    }
+
+    .cert_table {
+      width: 842px;
+      height: 595px;
+      border-spacing: 0px;
+      table-layout: fixed;
+      overflow: hidden;
+      color: #000;
+      text-align: center;
+      border: none;
+    }
+
+    .bgimg {
+      position: absolute;
+      height: 100%;
+      width: 100%;
+      z-index: 0;
+      left: 0;
+      top: 0;
+      background-color: #eee;
+    }
+
+    .content {
+      position: absolute;
+      z-index: 100;
+      height: 100%;
+      width: 100%;
+      left: 0;
+      top: 0;
+    }
+
+    .info {
+      line-height: 1.1;
+      position: absolute;
+      left: 5%;
+      text-align: center;
+      width: 90%;
+    }
+
+    .student {
+      bottom: 47%;
+      font-size: 28px;
+      font-weight: 400;
+    }
+
+    .course {
+      font-size: 28px;
+      top: 62%;
+    }
+
+    .date {
+      position: absolute;
+      text-align: left;
+      font-size: 10px;
+      font-weight: 700;
+    }
+
+    .date.start {
+      top: 83%;
+      left: 25%;
+    }
+
+    .date.end {
+      top: 85.7%;
+      left: 25%;
+    }
+  </style>
+</head>
+
+<body>
+  <table class="cert_table">
+    <tr>
+      <td style="position: relative;">
+        <img src="https://dd.unicraft.org/static/branding/autoeuro/cert_custom/cert.png" class="bgimg">
+        <div class="content">
+          <div class="info course">{{COURSE}}</div>
+          <div class="info student">{{STUDENT}}</div>
+        </div>
+        <div class="date start">{{START}}</div>
+        <div class="date end">{{END}}</div>
+      </td>
+    </tr>
+  </table>
+</body>
+
+</html>

+ 308 - 0
src/certificate/cdop/index.html

@@ -0,0 +1,308 @@
+<!doctype html>
+<html>
+
+<head>
+  <meta charset="UTF-8">
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    body,
+    html {
+      height: initial;
+      width: initial;
+      font-size: 13px;
+      line-height: 1.3;
+      -webkit-box-sizing: border-box;
+      box-sizing: border-box
+    }
+
+    body {
+      background: #fff;
+      font-weight: 400;
+      margin: 0;
+      padding: 0
+    }
+
+    * {
+      -webkit-box-sizing: inherit;
+      box-sizing: inherit
+    }
+
+    .cert {
+      font-family: UCfont, "Open Sans", Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif;
+      font-weight: 400;
+      font-size: 13px;
+      background-repeat: no-repeat;
+      background-position: center;
+      background-size: cover;
+      background-color: #fff;
+      display: block;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 2rem;
+      border: 1rem solid #2785ce;
+      padding: 4rem;
+      text-align: center;
+      position: relative;
+      height: 50rem;
+      width: 80rem
+    }
+
+    .cert p {
+      margin: .5em 0
+    }
+
+    .cert_logo {
+      position: absolute;
+      top: 4rem;
+      left: 10%;
+      width: 80%;
+      text-align: center;
+    }
+
+    .cert_logo img {
+      max-height: 100px;
+      max-width: 250px
+    }
+
+    .cert_main {
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      width: 80%;
+      -webkit-transform: translateY(-50%) translateX(-50%);
+      -ms-transform: translateY(-50%) translateX(-50%);
+      transform: translateY(-50%) translateX(-50%)
+    }
+
+    .cert_main p {
+      font-size: 1.1rem;
+      font-style: italic;
+      margin-top: .25em;
+      margin-bottom: .25em
+    }
+
+    .cert_company {
+      font-size: 1.25rem;
+      margin: 1rem;
+      white-space: pre
+    }
+
+    .cert_title {
+      font-size: 6.66667rem;
+      letter-spacing: 5px;
+      margin: 1rem;
+      text-transform: uppercase;
+      position: relative
+    }
+
+    .cert_title::after {
+      display: block;
+      content: "";
+      height: 1px;
+      width: 80%;
+      position: absolute;
+      bottom: 0;
+      left: 10%;
+      border-bottom: 1px solid #8c8c8c
+    }
+
+    .cert_student {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_course {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_comment {
+      color: #8c8c8c
+    }
+
+    .cert_details {
+      position: absolute;
+      bottom: 2rem;
+      left: 4rem;
+      color: #8c8c8c
+    }
+
+    .cert_details dd,
+    .cert_details dl,
+    .cert_details dt {
+      margin: 0;
+      padding: 0;
+      text-align: left;
+      letter-spacing: .025em
+    }
+
+    .cert_details dl {
+      padding: .5rem 0
+    }
+
+    .cert_details dd {
+      font-size: .85em
+    }
+
+    .cert_details dt {
+      font-size: 1.215em
+    }
+
+    .cert_sign {
+      position: absolute;
+      bottom: 2rem;
+      right: 4rem;
+      max-width: 50%;
+      text-align: right
+    }
+
+    .cert_sign_list {
+      display: -webkit-box;
+      display: -ms-flexbox;
+      display: flex;
+      -webkit-box-orient: horizontal;
+      -webkit-box-direction: normal;
+      -ms-flex-direction: row;
+      flex-direction: row;
+      -ms-flex-wrap: nowrap;
+      flex-wrap: nowrap;
+      max-width: none;
+      width: 50%;
+      -webkit-box-pack: end;
+      -ms-flex-pack: end;
+      justify-content: flex-end
+    }
+
+    .cert_sign_item {
+      width: 33%;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 0 10px
+    }
+
+    .cert_sign_info {
+      border-top: 1px solid #8c8c8c;
+      padding: .25rem;
+      font-size: .85em;
+      text-transform: uppercase;
+      color: #8c8c8c;
+      white-space: pre-line
+    }
+
+    .cert_sign_img {
+      padding: 5px
+    }
+
+    .cert_sign_img img {
+      height: 7rem;
+      max-width: 100%;
+      -o-object-fit: contain;
+      object-fit: contain;
+      -o-object-position: bottom;
+      object-position: bottom;
+      image-rendering: crisp-edges
+    }
+  </style>
+</head>
+
+<body>
+  <div class="cert" style="border-color: {{BORDER_COLOR}}">
+    <div class="cert_logo">
+      <img src="{{LOGO}}" alt="">
+    </div>
+    <div class="cert_main">
+      <div class="cert_title">{{CERT_TITLE}}</div>
+      <p>{{CERT_INTRO}}</p>
+      <div class="cert_student">
+        {{STUDENT}}
+      </div>
+      <p>{{CERT_COMPLETE_COURSE}}</p>
+      <div class="cert_course">
+        {{COURSE}}
+      </div>
+    </div>
+    <div class="cert_details">
+      <dl>
+        <dd>{{CERT_DATE_START}}</dd>
+        <dt>{{START}}</dt>
+      </dl>
+      <dl>
+        <dd>{{CERT_DATE_END}}</dd>
+        <dt>{{END}}</dt>
+      </dl>
+    </div>
+    <div class="cert_sign" {{SIGN_HIDE}}>
+      <div class="cert_sign_img">
+        <img src="{{SIGN_IMG}}">
+      </div>
+      <div class="cert_sign_info">{{SIGN_DESCR}}</div>
+    </div>
+  </div>
+</body>
+
+</html>

+ 161 - 0
src/certificate/ecrs/index.html

@@ -0,0 +1,161 @@
+<!DOCTYPE html>
+<html lang="ru">
+
+<head>
+  <meta charset="UTF-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Certificate</title>
+
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    html,
+    body {
+      padding: 0;
+      margin: 0;
+      font-family: 'UCfont', 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
+    }
+
+    .cert_table {
+      width: 842px;
+      height: 595px;
+      border-spacing: 0px;
+      table-layout: fixed;
+      overflow: hidden;
+      color: #000;
+      text-align: center;
+      border: none;
+    }
+
+    .bgimg {
+      position: absolute;
+      height: 100%;
+      width: 100%;
+      z-index: 0;
+      left: 0;
+      top: 0;
+      background-color: #eee;
+    }
+
+    .content {
+      position: absolute;
+      z-index: 100;
+      height: 100%;
+      width: 100%;
+      left: 0;
+      top: 0;
+    }
+
+    .info {
+      line-height: 1.1;
+      position: absolute;
+      left: 8.6%;
+      text-align: center;
+      width: 80%;
+    }
+
+    .student {
+      top: 37%;
+      font-size: 28px;
+      font-weight: 400;
+    }
+
+    .course {
+      font-size: 28px;
+      top: 55%;
+    }
+
+    .date {
+      position: absolute;
+      text-align: left;
+      font-size: 14px;
+      font-weight: 400;
+    }
+
+    .date.end {
+      bottom: 12.5%;
+      left: 20%;
+    }
+  </style>
+</head>
+
+<body>
+  <table class="cert_table">
+    <tr>
+      <td style="position: relative;">
+        <!-- <img src="http://ucdev:9002/static/branding/ecrs/cert_custom/bg_text.png" class="bgimg"> -->
+        <img src="https://dd.unicraft.org/static/branding/ecrs/cert_custom/bg_text.png" class="bgimg">
+        <div class="content">
+          <div class="info course">{{COURSE}}</div>
+          <div class="info student">{{STUDENT}}</div>
+        </div>
+        <div class="date end">{{END}}</div>
+      </td>
+    </tr>
+  </table>
+</body>
+
+</html>

+ 173 - 0
src/certificate/fpprt/index.html

@@ -0,0 +1,173 @@
+<!doctype html>
+<html>
+
+<head>
+  <meta charset="UTF-8">
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    body,
+    html {
+      height: initial;
+      width: initial;
+      font-size: 13px;
+      line-height: 1.3;
+      -webkit-box-sizing: border-box;
+      box-sizing: border-box
+    }
+
+    body {
+      background: #fff;
+      font-weight: 400;
+      margin: 0;
+      padding: 0
+    }
+
+    * {
+      -webkit-box-sizing: inherit;
+      box-sizing: inherit
+    }
+
+    .cert {
+      font-family: UCfont, "Open Sans", Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif;
+      font-weight: 400;
+      background-repeat: no-repeat;
+      background-position: center;
+      background-size: cover;
+      background-color: #fff;
+      display: block;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      text-align: center;
+      position: relative;
+      height: 728px;
+      width: 1040px;
+    }
+
+    .cert_student {
+      font-size: 30px;
+      font-weight: bold;
+      left: 10%;
+      width: 80%;
+      text-align: center;
+      position: absolute;
+      top: 38%;
+      z-index: 100;
+      white-space: nowrap;
+      overflow: hidden;
+    }
+
+    .cert_course {
+      font-size: 30px;
+      font-weight: bold;
+      left: 5%;
+      width: 90%;
+      text-align: center;
+      position: absolute;
+      top: 51.7%;
+      z-index: 100;
+    }
+
+    .cert_date {
+      position: absolute;
+      top: 59.2%;
+      text-align: center;
+      width: 100%;
+      left: 0;
+      font-size: 20px;
+      z-index: 100;
+    }
+
+    .bgimg {
+      position: absolute;
+      height: 100%;
+      width: 100%;
+      z-index: 0;
+      left: 0;
+      top: 0;
+      background-color: #eee;
+    }
+  </style>
+</head>
+
+<body>
+  <div class="cert">
+    <img src="https://dd.unicraft.org/static/branding/fpprt/cert_custom/bg_2.png" class="bgimg">
+    <div class="cert_content">
+      <div class="cert_student">
+        {{STUDENT}}
+      </div>
+      <div class="cert_course">
+        <!-- &laquo;{{COURSE}}&raquo; -->
+        <!-- &laquo;Экспертные сессии по Digital-маркетингу&raquo; -->
+      </div>
+      <!-- <div class="cert_date">в период с 20.08.2021 по 29.11.2021</div> -->
+      <!-- <div class="cert_date">в период с {{START}} по {{END}}</div> -->
+    </div>
+  </div>
+</body>
+
+</html>

+ 318 - 0
src/certificate/hanbuz/index.html

@@ -0,0 +1,318 @@
+<!doctype html>
+<html>
+
+<head>
+  <meta charset="UTF-8">
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    body,
+    html {
+      height: initial;
+      width: initial;
+      font-size: 13px;
+      line-height: 1.3;
+      -webkit-box-sizing: border-box;
+      box-sizing: border-box
+    }
+
+    body {
+      background: #fff;
+      font-weight: 400;
+      margin: 0;
+      padding: 0
+    }
+
+    * {
+      -webkit-box-sizing: inherit;
+      box-sizing: inherit
+    }
+
+    .cert {
+      font-family: UCfont, "Open Sans", Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif;
+      font-weight: 400;
+      font-size: 13px;
+      background-repeat: no-repeat;
+      background-position: center;
+      background-size: cover;
+      background-color: #fff;
+      display: block;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 2rem;
+      border: 1rem solid #2785ce;
+      padding: 4rem;
+      text-align: center;
+      position: relative;
+      height: 50rem;
+      width: 80rem
+    }
+
+    .cert p {
+      margin: .5em 0
+    }
+
+    .cert_logo {
+      position: absolute;
+      top: 4rem;
+      left: 4rem
+    }
+
+    .cert_logo img {
+      max-height: 100px;
+      max-width: 250px
+    }
+
+    .cert_main {
+      position: absolute;
+      top: 45%;
+      left: 50%;
+      width: 80%;
+      -webkit-transform: translateY(-50%) translateX(-50%);
+      -ms-transform: translateY(-50%) translateX(-50%);
+      transform: translateY(-50%) translateX(-50%)
+    }
+
+    .cert_main p {
+      font-size: 1.1rem;
+      font-style: italic;
+      margin-top: .25em;
+      margin-bottom: .25em
+    }
+
+    .cert_company {
+      font-size: 1.25rem;
+      margin: 1rem;
+      white-space: pre
+    }
+
+    .cert_title {
+      font-size: 6.66667rem;
+      letter-spacing: 5px;
+      margin: 1rem;
+      text-transform: uppercase;
+      position: relative
+    }
+
+    .cert_title::after {
+      display: block;
+      content: "";
+      height: 1px;
+      width: 80%;
+      position: absolute;
+      bottom: 0;
+      left: 10%;
+      border-bottom: 1px solid #8c8c8c
+    }
+
+    .cert_student {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_course {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_comment {
+      color: #8c8c8c
+    }
+
+    .cert_details {
+      position: absolute;
+      bottom: 2rem;
+      left: 4rem;
+      color: #8c8c8c
+    }
+
+    .cert_details dd,
+    .cert_details dl,
+    .cert_details dt {
+      margin: 0;
+      padding: 0;
+      text-align: left;
+      letter-spacing: .025em
+    }
+
+    .cert_details dl {
+      padding: .5rem 0
+    }
+
+    .cert_details dd {
+      font-size: .85em
+    }
+
+    .cert_details dt {
+      font-size: 1.215em
+    }
+
+    .cert_sign {
+      position: absolute;
+      bottom: 2rem;
+      right: 4rem;
+      max-width: 50%;
+      text-align: right
+    }
+
+    .cert_sign_list {
+      display: -webkit-box;
+      display: -ms-flexbox;
+      display: flex;
+      -webkit-box-orient: horizontal;
+      -webkit-box-direction: normal;
+      -ms-flex-direction: row;
+      flex-direction: row;
+      -ms-flex-wrap: nowrap;
+      flex-wrap: nowrap;
+      max-width: none;
+      width: 50%;
+      -webkit-box-pack: end;
+      -ms-flex-pack: end;
+      justify-content: flex-end
+    }
+
+    .cert_sign_item {
+      width: 33%;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 0 10px
+    }
+
+    .cert_sign_info {
+      border-top: 1px solid #8c8c8c;
+      padding: .25rem;
+      font-size: .85em;
+      text-transform: uppercase;
+      color: #8c8c8c;
+      white-space: pre-line
+    }
+
+    .cert_sign_img {
+      padding: 5px
+    }
+
+    .cert_sign_img img {
+      height: 7rem;
+      max-width: 100%;
+      -o-object-fit: contain;
+      object-fit: contain;
+      -o-object-position: bottom;
+      object-position: bottom;
+      image-rendering: crisp-edges
+    }
+
+    .cert_bg_img {
+      position: absolute;
+      bottom: 0;
+      right: 0;
+      height: 100%;
+      width: 100%;
+      object-fit: cover;
+    }
+  </style>
+</head>
+
+<body>
+  <div class="cert" style="border-color: {{BORDER_COLOR}}">
+    <div class="cert_logo">
+      <img src="{{LOGO}}" alt="">
+    </div>
+    <div class="cert_main">
+      <div class="cert_company">{{COMPANY}}</div>
+      <div class="cert_title">{{CERT_TITLE}}</div>
+      <p>{{CERT_INTRO}}</p>
+      <div class="cert_student">
+        {{STUDENT}}
+      </div>
+      <p>{{CERT_COMPLETE_COURSE}}</p>
+      <div class="cert_course">
+        {{COURSE}}
+      </div>
+    </div>
+    <div class="cert_details">
+      <dl>
+        <dd>{{CERT_DATE_START}}</dd>
+        <dt>{{START}}</dt>
+      </dl>
+      <dl>
+        <dd>{{CERT_DATE_END}}</dd>
+        <dt>{{END}}</dt>
+      </dl>
+    </div>
+    <img class="cert_bg_img" src="https://dd.unicraft.org/static/branding/hanbuz/cert/bg.png"/>
+    <!-- <img class="cert_bg_img" src="http://ucdev:9002/static/branding/hanbuz/cert/bg.png"/> -->
+    <div class="cert_sign" {{SIGN_HIDE}}>
+      <div class="cert_sign_img">
+        <img src="{{SIGN_IMG}}">
+      </div>
+      <div class="cert_sign_info">{{SIGN_DESCR}}</div>
+    </div>
+  </div>
+</body>
+
+</html>

+ 307 - 0
src/certificate/intex/index.html

@@ -0,0 +1,307 @@
+<!doctype html>
+<html>
+
+<head>
+  <meta charset="UTF-8">
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    body,
+    html {
+      height: initial;
+      width: initial;
+      font-size: 13px;
+      line-height: 1.3;
+      -webkit-box-sizing: border-box;
+      box-sizing: border-box
+    }
+
+    body {
+      background: #fff;
+      font-weight: 400;
+      margin: 0;
+      padding: 0
+    }
+
+    * {
+      -webkit-box-sizing: inherit;
+      box-sizing: inherit
+    }
+
+    .cert {
+      font-family: UCfont, "Open Sans", Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif;
+      font-weight: 400;
+      font-size: 13px;
+      background-repeat: no-repeat;
+      background-position: center;
+      background-size: cover;
+      background-color: #fff;
+      display: block;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 2rem;
+      border: 1rem solid #2785ce;
+      padding: 4rem;
+      text-align: center;
+      position: relative;
+      height: 50rem;
+      width: 80rem
+    }
+
+    .cert p {
+      margin: .5em 0
+    }
+
+    .cert_logo {
+      position: absolute;
+      top: 4rem;
+      right: 4rem
+    }
+
+    .cert_logo img {
+      max-height: 100px;
+      max-width: 250px
+    }
+
+    .cert_main {
+      position: absolute;
+      top: 45%;
+      left: 50%;
+      width: 80%;
+      -webkit-transform: translateY(-50%) translateX(-50%);
+      -ms-transform: translateY(-50%) translateX(-50%);
+      transform: translateY(-50%) translateX(-50%)
+    }
+
+    .cert_main p {
+      font-size: 1.1rem;
+      font-style: italic;
+      margin-top: .25em;
+      margin-bottom: .25em
+    }
+
+    .cert_company {
+      font-size: 1.25rem;
+      margin: 1rem;
+      white-space: pre
+    }
+
+    .cert_title {
+      font-size: 6.66667rem;
+      letter-spacing: 5px;
+      margin: 1rem;
+      text-transform: uppercase;
+      position: relative
+    }
+
+    .cert_title::after {
+      display: block;
+      content: "";
+      height: 1px;
+      width: 80%;
+      position: absolute;
+      bottom: 0;
+      left: 10%;
+      border-bottom: 1px solid #8c8c8c
+    }
+
+    .cert_student {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_course {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_comment {
+      color: #8c8c8c
+    }
+
+    .cert_details {
+      position: absolute;
+      bottom: 2rem;
+      left: 4rem;
+      color: #8c8c8c
+    }
+
+    .cert_details dd,
+    .cert_details dl,
+    .cert_details dt {
+      margin: 0;
+      padding: 0;
+      text-align: left;
+      letter-spacing: .025em
+    }
+
+    .cert_details dl {
+      padding: .5rem 0
+    }
+
+    .cert_details dd {
+      font-size: .85em
+    }
+
+    .cert_details dt {
+      font-size: 1.215em
+    }
+
+    .cert_sign {
+      position: absolute;
+      bottom: 2rem;
+      right: 4rem;
+      max-width: 30%;
+      text-align: right
+    }
+
+    .cert_sign_list {
+      display: -webkit-box;
+      display: -ms-flexbox;
+      display: flex;
+      -webkit-box-orient: horizontal;
+      -webkit-box-direction: normal;
+      -ms-flex-direction: row;
+      flex-direction: row;
+      -ms-flex-wrap: nowrap;
+      flex-wrap: nowrap;
+      max-width: none;
+      width: 50%;
+      -webkit-box-pack: end;
+      -ms-flex-pack: end;
+      justify-content: flex-end
+    }
+
+    .cert_sign_item {
+      width: 33%;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 0 10px
+    }
+
+    .cert_sign_info {
+      border-top: 1px solid #8c8c8c;
+      padding: .25rem;
+      font-size: .85em;
+      text-transform: uppercase;
+      color: #8c8c8c;
+      white-space: pre-line
+    }
+
+    .cert_sign_img {
+      padding: 5px
+    }
+
+    .cert_sign_img img {
+      height: 12rem;
+      max-width: 100%;
+      -o-object-fit: contain;
+      object-fit: contain;
+      -o-object-position: bottom;
+      object-position: bottom;
+      image-rendering: crisp-edges
+    }
+  </style>
+</head>
+
+<body>
+  <div class="cert" style="border-color: {{BORDER_COLOR}}">
+    <div class="cert_logo">
+      <img src="{{LOGO}}" alt="">
+    </div>
+    <div class="cert_main">
+      <div class="cert_company">{{COMPANY}}</div>
+      <div class="cert_title">{{CERT_TITLE}}</div>
+      <p>{{CERT_INTRO}}</p>
+      <div class="cert_student">
+        {{STUDENT}}
+      </div>
+      <p>{{CERT_COMPLETE_COURSE}}</p>
+      <div class="cert_course">
+        {{COURSE}}
+      </div>
+    </div>
+    <div class="cert_details">
+      <dl>
+        <dd>{{CERT_DATE_START}}</dd>
+        <dt>{{START}}</dt>
+      </dl>
+      <dl>
+        <dd>{{CERT_DATE_END}}</dd>
+        <dt>{{END}}</dt>
+      </dl>
+    </div>
+    <div class="cert_sign" {{SIGN_HIDE}}>
+      <div class="cert_sign_img">
+        <img src="{{SIGN_IMG}}">
+      </div>
+      <div class="cert_sign_info">{{SIGN_DESCR}}</div>
+    </div>
+  </div>
+</body>
+
+</html>

+ 315 - 0
src/certificate/kamatyres/index.html

@@ -0,0 +1,315 @@
+<!doctype html>
+<html>
+
+<head>
+  <meta charset="UTF-8">
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    body,
+    html {
+      height: initial;
+      width: initial;
+      font-size: 13px;
+      line-height: 1.3;
+      -webkit-box-sizing: border-box;
+      box-sizing: border-box
+    }
+
+    body {
+      background: #fff;
+      font-weight: 400;
+      margin: 0;
+      padding: 0
+    }
+
+    * {
+      -webkit-box-sizing: inherit;
+      box-sizing: inherit
+    }
+
+    .cert {
+      font-family: UCfont, "Open Sans", Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif;
+      font-weight: 400;
+      font-size: 13px;
+      background-repeat: no-repeat;
+      background-position: center;
+      background-size: cover;
+      background-color: #fff;
+      display: block;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 2rem;
+      border: 1rem solid #2785ce;
+      padding: 4rem;
+      text-align: center;
+      position: relative;
+      height: 50rem;
+      width: 80rem
+    }
+
+    .cert p {
+      margin: .5em 0
+    }
+
+    .cert_logo {
+      position: absolute;
+      top: 4rem;
+      left: 4rem
+    }
+
+    .cert_logo img {
+      max-height: 100px;
+      max-width: 250px
+    }
+
+    .cert_main {
+      position: absolute;
+      top: 45%;
+      left: 50%;
+      width: 80%;
+      -webkit-transform: translateY(-50%) translateX(-50%);
+      -ms-transform: translateY(-50%) translateX(-50%);
+      transform: translateY(-50%) translateX(-50%)
+    }
+
+    .cert_main p {
+      font-size: 1.1rem;
+      font-style: italic;
+      margin-top: .25em;
+      margin-bottom: .25em
+    }
+
+    .cert_company {
+      font-size: 1.25rem;
+      margin: 1rem;
+      white-space: pre
+    }
+
+    .cert_title {
+      font-size: 6.66667rem;
+      letter-spacing: 5px;
+      margin: 1rem;
+      text-transform: uppercase;
+      position: relative
+    }
+
+    .cert_title::after {
+      display: block;
+      content: "";
+      height: 1px;
+      width: 80%;
+      position: absolute;
+      bottom: 0;
+      left: 10%;
+      border-bottom: 1px solid #8c8c8c
+    }
+
+    .cert_student {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_course {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_comment {
+      color: #8c8c8c
+    }
+
+    .cert_details {
+      position: absolute;
+      bottom: 2rem;
+      left: 4rem;
+      color: #8c8c8c
+    }
+
+    .cert_details dd,
+    .cert_details dl,
+    .cert_details dt {
+      margin: 0;
+      padding: 0;
+      text-align: left;
+      letter-spacing: .025em
+    }
+
+    .cert_details dl {
+      padding: .5rem 0
+    }
+
+    .cert_details dd {
+      font-size: .85em
+    }
+
+    .cert_details dt {
+      font-size: 1.215em
+    }
+
+    .cert_sign {
+      position: absolute;
+      bottom: 2rem;
+      right: 4rem;
+      max-width: 50%;
+      text-align: right
+    }
+
+    .cert_sign_list {
+      display: -webkit-box;
+      display: -ms-flexbox;
+      display: flex;
+      -webkit-box-orient: horizontal;
+      -webkit-box-direction: normal;
+      -ms-flex-direction: row;
+      flex-direction: row;
+      -ms-flex-wrap: nowrap;
+      flex-wrap: nowrap;
+      max-width: none;
+      width: 50%;
+      -webkit-box-pack: end;
+      -ms-flex-pack: end;
+      justify-content: flex-end
+    }
+
+    .cert_sign_item {
+      width: 33%;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 0 10px
+    }
+
+    .cert_sign_info {
+      border-top: 1px solid #8c8c8c;
+      padding: .25rem;
+      font-size: .85em;
+      text-transform: uppercase;
+      color: #8c8c8c;
+      white-space: pre-line
+    }
+
+    .cert_sign_img {
+      padding: 5px
+    }
+
+    .cert_sign_img img {
+      height: 7rem;
+      max-width: 100%;
+      -o-object-fit: contain;
+      object-fit: contain;
+      -o-object-position: bottom;
+      object-position: bottom;
+      image-rendering: crisp-edges
+    }
+
+    .cert_bg_img {
+      position: absolute;
+      bottom: 0;
+      right: 0;
+      height: 50%;
+    }
+  </style>
+</head>
+
+<body>
+  <div class="cert" style="border-color: {{BORDER_COLOR}}">
+    <div class="cert_logo">
+      <img src="{{LOGO}}" alt="">
+    </div>
+    <div class="cert_main">
+      <div class="cert_company">{{COMPANY}}</div>
+      <div class="cert_title">{{CERT_TITLE}}</div>
+      <p>{{CERT_INTRO}}</p>
+      <div class="cert_student">
+        {{STUDENT}}
+      </div>
+      <p>{{CERT_COMPLETE_COURSE}}</p>
+      <div class="cert_course">
+        {{COURSE}}
+      </div>
+    </div>
+    <div class="cert_details">
+      <dl>
+        <dd>{{CERT_DATE_START}}</dd>
+        <dt>{{START}}</dt>
+      </dl>
+      <dl>
+        <dd>{{CERT_DATE_END}}</dd>
+        <dt>{{END}}</dt>
+      </dl>
+    </div>
+    <img class="cert_bg_img" src="https://dd.unicraft.org/static/branding/kamatyres/cert/bg.png"/>
+    <div class="cert_sign" {{SIGN_HIDE}}>
+      <div class="cert_sign_img">
+        <img src="{{SIGN_IMG}}">
+      </div>
+      <div class="cert_sign_info">{{SIGN_DESCR}}</div>
+    </div>
+  </div>
+</body>
+
+</html>

+ 306 - 0
src/certificate/leobank/index.html

@@ -0,0 +1,306 @@
+<!doctype html>
+<html>
+
+<head>
+  <meta charset="UTF-8">
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    body,
+    html {
+      height: initial;
+      width: initial;
+      font-size: 13px;
+      line-height: 1.3;
+      -webkit-box-sizing: border-box;
+      box-sizing: border-box
+    }
+
+    body {
+      background: #fff;
+      font-weight: 400;
+      margin: 0;
+      padding: 0
+    }
+
+    * {
+      -webkit-box-sizing: inherit;
+      box-sizing: inherit
+    }
+
+    .cert {
+      font-family: UCfont, "Open Sans", Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif;
+      font-weight: 400;
+      font-size: 13px;
+      background-repeat: no-repeat;
+      background-position: center;
+      background-size: cover;
+      background-color: #fff;
+      display: block;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 2rem;
+      border: 1rem solid #2785ce;
+      padding: 4rem;
+      text-align: center;
+      position: relative;
+      height: 50rem;
+      width: 80rem
+    }
+
+    .cert p {
+      margin: .5em 0
+    }
+
+    .cert_logo {
+      position: absolute;
+      top: 4rem;
+      left: 4rem
+    }
+
+    .cert_logo img {
+      max-height: 100px;
+      max-width: 250px
+    }
+
+    .cert_main {
+      position: absolute;
+      top: 45%;
+      left: 50%;
+      width: 80%;
+      -webkit-transform: translateY(-50%) translateX(-50%);
+      -ms-transform: translateY(-50%) translateX(-50%);
+      transform: translateY(-50%) translateX(-50%)
+    }
+
+    .cert_main p {
+      font-size: 1.1rem;
+      font-style: italic;
+      margin-top: .25em;
+      margin-bottom: .25em
+    }
+
+    .cert_company {
+      font-size: 1.25rem;
+      margin: 1rem;
+      white-space: pre
+    }
+
+    .cert_title {
+      font-size: 6.66667rem;
+      letter-spacing: 5px;
+      margin: 1rem;
+      text-transform: uppercase;
+      position: relative
+    }
+
+    .cert_title::after {
+      display: block;
+      content: "";
+      height: 1px;
+      width: 80%;
+      position: absolute;
+      bottom: 0;
+      left: 10%;
+      border-bottom: 1px solid #8c8c8c
+    }
+
+    .cert_student {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_course {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_comment {
+      color: #8c8c8c
+    }
+
+    .cert_details {
+      position: absolute;
+      bottom: 2rem;
+      left: 4rem;
+      color: #8c8c8c
+    }
+
+    .cert_details dd,
+    .cert_details dl,
+    .cert_details dt {
+      margin: 0;
+      padding: 0;
+      text-align: left;
+      letter-spacing: .025em
+    }
+
+    .cert_details dl {
+      padding: .5rem 0
+    }
+
+    .cert_details dd {
+      font-size: .85em
+    }
+
+    .cert_details dt {
+      font-size: 1.215em
+    }
+
+    .cert_sign {
+      position: absolute;
+      bottom: 2rem;
+      right: 4rem;
+      max-width: 50%;
+      text-align: right
+    }
+
+    .cert_sign_list {
+      display: -webkit-box;
+      display: -ms-flexbox;
+      display: flex;
+      -webkit-box-orient: horizontal;
+      -webkit-box-direction: normal;
+      -ms-flex-direction: row;
+      flex-direction: row;
+      -ms-flex-wrap: nowrap;
+      flex-wrap: nowrap;
+      max-width: none;
+      width: 50%;
+      -webkit-box-pack: end;
+      -ms-flex-pack: end;
+      justify-content: flex-end
+    }
+
+    .cert_sign_item {
+      width: 33%;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 0 10px
+    }
+
+    .cert_sign_info {
+      border-top: 1px solid #8c8c8c;
+      padding: .25rem;
+      font-size: .85em;
+      text-transform: uppercase;
+      color: #8c8c8c;
+      white-space: pre-line
+    }
+
+    .cert_sign_img {
+      padding: 5px
+    }
+
+    .cert_sign_img img {
+      height: 7rem;
+      max-width: 100%;
+      -o-object-fit: contain;
+      object-fit: contain;
+      -o-object-position: bottom;
+      object-position: bottom;
+      image-rendering: crisp-edges
+    }
+  </style>
+</head>
+
+<body>
+  <div class="cert" style="border-color: {{BORDER_COLOR}}">
+    <div class="cert_logo">
+      <img src="{{LOGO}}" alt="">
+    </div>
+    <div class="cert_main">
+      <div class="cert_title">{{CERT_TITLE}}</div>
+      <p>{{CERT_INTRO}}</p>
+      <div class="cert_student">
+        {{STUDENT}}
+      </div>
+      <p>{{CERT_COMPLETE_COURSE}}</p>
+      <div class="cert_course">
+        {{COURSE}}
+      </div>
+    </div>
+    <div class="cert_details">
+      <dl>
+        <dd>{{CERT_DATE_START}}</dd>
+        <dt>{{START}}</dt>
+      </dl>
+      <dl>
+        <dd>{{CERT_DATE_END}}</dd>
+        <dt>{{END}}</dt>
+      </dl>
+    </div>
+    <div class="cert_sign" {{SIGN_HIDE}}>
+      <div class="cert_sign_img">
+        <img src="{{SIGN_IMG}}">
+      </div>
+      <div class="cert_sign_info">{{SIGN_DESCR}}</div>
+    </div>
+  </div>
+</body>
+
+</html>

+ 311 - 0
src/certificate/meest/index.html

@@ -0,0 +1,311 @@
+<!doctype html>
+<html>
+
+<head>
+  <meta charset="UTF-8">
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    body,
+    html {
+      height: initial;
+      width: initial;
+      font-size: 13px;
+      line-height: 1.3;
+      -webkit-box-sizing: border-box;
+      box-sizing: border-box
+    }
+
+    body {
+      background: #fff;
+      font-weight: 400;
+      margin: 0;
+      padding: 0
+    }
+
+    * {
+      -webkit-box-sizing: inherit;
+      box-sizing: inherit
+    }
+
+    .cert {
+      font-family: UCfont, "Open Sans", Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif;
+      font-weight: 400;
+      font-size: 13px;
+      background-repeat: no-repeat;
+      background-position: center;
+      background-size: cover;
+      background-color: #fff;
+      display: block;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 2rem;
+      border: 1rem solid #2785ce;
+      padding: 4rem;
+      text-align: center;
+      position: relative;
+      height: 50rem;
+      width: 80rem
+    }
+
+    .cert p {
+      margin: .5em 0
+    }
+
+    .cert_logo {
+      position: absolute;
+      top: 4rem;
+      left: 4rem
+    }
+
+    .cert_logo img {
+      max-height: 100px;
+      max-width: 250px
+    }
+
+    .cert_main {
+      position: absolute;
+      top: 45%;
+      left: 50%;
+      width: 80%;
+      -webkit-transform: translateY(-50%) translateX(-50%);
+      -ms-transform: translateY(-50%) translateX(-50%);
+      transform: translateY(-50%) translateX(-50%)
+    }
+
+    .cert_main p {
+      font-size: 1.1rem;
+      font-style: italic;
+      margin-top: .25em;
+      margin-bottom: .25em
+    }
+
+    .cert_company {
+      font-size: 1.25rem;
+      margin: 1rem;
+      white-space: pre
+    }
+
+    .cert_title {
+      font-size: 6.66667rem;
+      letter-spacing: 5px;
+      margin: 1rem;
+      text-transform: uppercase;
+      position: relative
+    }
+
+    .cert_title::after {
+      display: block;
+      content: "";
+      height: 1px;
+      width: 80%;
+      position: absolute;
+      bottom: 0;
+      left: 10%;
+      border-bottom: 1px solid #8c8c8c
+    }
+
+    .cert_student {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_course {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_comment {
+      color: #8c8c8c
+    }
+
+    .cert_details {
+      position: absolute;
+      bottom: 2rem;
+      left: 4rem;
+      color: #8c8c8c
+    }
+
+    .cert_details dd,
+    .cert_details dl,
+    .cert_details dt {
+      margin: 0;
+      padding: 0;
+      text-align: left;
+      letter-spacing: .025em
+    }
+
+    .cert_details dl {
+      padding: .5rem 0
+    }
+
+    .cert_details dd {
+      font-size: .85em
+    }
+
+    .cert_details dt {
+      font-size: 1.215em
+    }
+
+    .cert_sign {
+      position: absolute;
+      bottom: 2rem;
+      right: 4rem;
+      max-width: 50%;
+      text-align: right
+    }
+
+    .cert_sign_list {
+      display: -webkit-box;
+      display: -ms-flexbox;
+      display: flex;
+      -webkit-box-orient: horizontal;
+      -webkit-box-direction: normal;
+      -ms-flex-direction: row;
+      flex-direction: row;
+      -ms-flex-wrap: nowrap;
+      flex-wrap: nowrap;
+      max-width: none;
+      width: 50%;
+      -webkit-box-pack: end;
+      -ms-flex-pack: end;
+      justify-content: flex-end
+    }
+
+    .cert_sign_item {
+      width: 33%;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 0 10px
+    }
+
+    .cert_sign_info {
+      border-top: 1px solid #8c8c8c;
+      padding: .25rem;
+      font-size: .85em;
+      text-transform: uppercase;
+      color: #8c8c8c;
+      white-space: pre-line
+    }
+
+    .cert_sign_img {
+      padding: 5px
+    }
+
+    .cert_sign_img img {
+      height: 7rem;
+      max-width: 100%;
+      -o-object-fit: contain;
+      object-fit: contain;
+      -o-object-position: bottom;
+      object-position: bottom;
+      image-rendering: crisp-edges
+    }
+  </style>
+</head>
+
+<body>
+  <div class="cert" style="border-color: {{BORDER_COLOR}}">
+    <div class="cert_logo">
+      <img src="{{LOGO}}" alt="">
+    </div>
+    <div class="cert_main">
+      <div class="cert_company">{{COMPANY}}</div>
+      <div class="cert_title">{{CERT_TITLE}}</div>
+      <p>{{CERT_INTRO}}</p>
+      <div class="cert_student">
+        {{STUDENT}}
+      </div>
+      <p>{{CERT_COMPLETE_COURSE}}</p>
+      <div class="cert_course">
+        {{COURSE}}
+      </div>
+    </div>
+    <div class="cert_details">
+      <dl>
+        <dd>{{CERT_DATE_START}}</dd>
+        <dt>{{START}}</dt>
+      </dl>
+      <dl>
+        <dd>{{CERT_DATE_END}}</dd>
+        <dt>{{END}}</dt>
+      </dl>
+      <dl>
+        <dd style="border-bottom: 1px solid #8c8c8c; height: 2rem;"></dd>
+        <dt>Кол-во часов</dt>
+      </dl>
+    </div>
+    <div class="cert_sign" {{SIGN_HIDE}}>
+      <div class="cert_sign_img">
+        <img src="{{SIGN_IMG}}">
+      </div>
+      <div class="cert_sign_info">{{SIGN_DESCR}}</div>
+    </div>
+  </div>
+</body>
+
+</html>

+ 169 - 0
src/certificate/nettle/index.html

@@ -0,0 +1,169 @@
+<!DOCTYPE html>
+<html lang="ru">
+
+<head>
+  <meta charset="UTF-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Certificate</title>
+
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    html,
+    body {
+      padding: 0;
+      margin: 0;
+      font-family: 'UCfont', 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
+    }
+
+    .cert_table {
+      width: 842px;
+      height: 595px;
+      border-spacing: 0px;
+      table-layout: fixed;
+      overflow: hidden;
+      color: #4E764A;
+      text-align: center;
+      border: none;
+    }
+
+    .bgimg {
+      position: absolute;
+      height: 100%;
+      width: 100%;
+      z-index: 0;
+      left: 0;
+      top: 0;
+      background-color: #eee;
+    }
+
+    .content {
+      position: absolute;
+      z-index: 100;
+      height: 100%;
+      width: 100%;
+      left: 0;
+      top: 0;
+    }
+
+    .info {
+      line-height: 1.1;
+      position: absolute;
+      left: 39%;
+      text-align: center;
+      width: 55%;
+    }
+
+    .student {
+      bottom: 49%;
+      font-size: 50px;
+      font-weight: 400;
+    }
+
+    .course {
+      font-size: 28px;
+      top: 65%;
+      border-bottom: 5px solid currentColor;
+    }
+
+    .date {
+      position: absolute;
+      width: 25%;
+      left: 5.25%;
+      text-align: center;
+      font-size: 13px;
+      font-weight: 700;
+      color: #224828;
+    }
+
+    .date.start {
+      top: 67%;
+    }
+
+    .date.end {
+      top: 73%;
+    }
+  </style>
+</head>
+
+<body>
+  <table class="cert_table">
+    <tr>
+      <td style="position: relative;">
+        <img src="https://dd.unicraft.org/static/branding/nettle/cert_custom/bg.png" class="bgimg">
+        <!-- <img src="http://ucdev:9002/static/branding/nettle/cert_custom/bg.png" class="bgimg"> -->
+        <div class="content">
+          <div class="info course">{{COURSE}}</div>
+          <div class="info student">{{STUDENT}}</div>
+        </div>
+        <div class="date start">{{START}}</div>
+        <div class="date end">{{END}}</div>
+      </td>
+    </tr>
+  </table>
+</body>
+
+</html>

+ 156 - 0
src/certificate/ordamed/index.html

@@ -0,0 +1,156 @@
+<!DOCTYPE html>
+<html lang="ru">
+
+<head>
+  <meta charset="UTF-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Certificate</title>
+
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    html,
+    body {
+      padding: 0;
+      margin: 0;
+      font-family: 'UCfont', 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
+    }
+
+    .cert_table {
+      width: 1753px;
+      height: 1240px;
+      border-spacing: 0px;
+      table-layout: fixed;
+      overflow: hidden;
+      color: #000;
+      text-align: center;
+      border: none;
+    }
+
+    .bgimg {
+      position: absolute;
+      height: 100%;
+      width: 100%;
+      z-index: 0;
+      left: 0;
+      top: 0;
+      background-color: #eee;
+    }
+
+    .content {
+      position: absolute;
+      z-index: 100;
+      height: 100%;
+      width: 100%;
+      left: 0;
+      top: 0;
+    }
+
+    .info {
+      font-size: 40px;
+      line-height: 1.1;
+      position: absolute;
+      width: 100%;
+      left: 0;
+      text-align: center;
+    }
+
+    .student {
+      bottom: 52%;
+    }
+
+    .course {
+      bottom: 36%;
+    }
+
+    .date {
+      position: absolute;
+      width: 100%;
+      bottom: 2%;
+      text-align: center;
+      font-weight: normal;
+      font-size: 18px;
+    }
+  </style>
+</head>
+
+<body>
+  <table class="cert_table">
+    <tr>
+      <td style="position: relative;">
+        <img src="https://dd.unicraft.org/static/branding/ordamed/cert_custom/bg.png" class="bgimg">
+        <!-- <img src="http://ucdev:9002/static/branding/ordamed/cert_custom/bg.png" class="bgimg"> -->
+        <div class="content">
+          <div class="info course">{{COURSE}}</div>
+          <div class="info student">{{STUDENT}}</div>
+          <div class="date">Алматы, {{END}}</div>
+        </div>
+      </td>
+    </tr>
+  </table>
+</body>
+
+</html>

+ 251 - 0
src/certificate/smokingshop/index.html

@@ -0,0 +1,251 @@
+<!doctype html>
+<html>
+
+<head>
+  <meta charset="UTF-8">
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    body,
+    html {
+      height: initial;
+      width: initial;
+      font-size: 15px;
+      line-height: 1.3;
+      -webkit-box-sizing: border-box;
+      box-sizing: border-box
+    }
+
+    body {
+      background: #fff;
+      font-weight: 400;
+      margin: 0;
+      padding: 0
+    }
+
+    * {
+      -webkit-box-sizing: inherit;
+      box-sizing: inherit
+    }
+
+    .cert {
+      font-family: UCfont, "Open Sans", Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif;
+      font-weight: 400;
+      font-size: 1rem;
+      background-repeat: no-repeat;
+      background-position: center;
+      background-size: cover;
+      background-color: #fff;
+      display: block;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 0;
+      border: none;
+      padding: 4rem;
+      text-align: center;
+      position: relative;
+      height: 905px;
+      width: 1280px;
+      background: #000;
+    }
+
+    .cert p {
+      margin: .5em 0
+    }
+
+    .cert_main {
+      position: absolute;
+      top: 60%;
+      left: 50%;
+      width: 80%;
+      -webkit-transform: translateY(-50%) translateX(-50%);
+      -ms-transform: translateY(-50%) translateX(-50%);
+      transform: translateY(-50%) translateX(-50%)
+    }
+
+    .cert_main p {
+      font-size: 1.1rem;
+      font-style: italic;
+      margin-top: .25em;
+      margin-bottom: .25em
+    }
+
+    .cert_company {
+      font-size: 1.25rem;
+      margin: 1rem;
+      white-space: pre
+    }
+
+    .cert_title {
+      font-size: 6.66667rem;
+      letter-spacing: 5px;
+      margin: 1rem;
+      text-transform: uppercase;
+      position: relative
+    }
+
+    .cert_title::after {
+      display: block;
+      content: "";
+      height: 1px;
+      width: 80%;
+      position: absolute;
+      bottom: 0;
+      left: 10%;
+      border-bottom: 1px solid #8c8c8c
+    }
+
+    .cert_student {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_course {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_comment {
+      color: #8c8c8c
+    }
+
+    .cert_details {
+      position: absolute;
+      bottom: 2rem;
+      left: 4rem;
+      color: #8c8c8c
+    }
+
+    .cert_details dd,
+    .cert_details dl,
+    .cert_details dt {
+      margin: 0;
+      padding: 0;
+      text-align: left;
+      letter-spacing: .025em
+    }
+
+    .cert_details dl {
+      padding: .5rem 0
+    }
+
+    .cert_details dd {
+      font-size: .85em
+    }
+
+    .cert_details dt {
+      font-size: 1.215em
+    }
+
+    .cert_content {
+      position: relative;
+      z-index: 2;
+      width: 100%;
+      height: 100%;
+    }
+
+    .cert_bg_img {
+      position: absolute;
+      left: 0;
+      top: 0;
+      width: 100%;
+      height: 100%;
+      object-fit: cover;
+      object-position: center;
+      z-index: 1;
+    }
+  </style>
+</head>
+
+<body>
+  <div class="cert" style="border-color: {{BORDER_COLOR}}">
+    <div class="cert_content">
+      <div class="cert_main">
+        <p>{{CERT_INTRO}}</p>
+        <div class="cert_student">
+          {{STUDENT}}
+        </div>
+        <p>{{CERT_COMPLETE_COURSE}}</p>
+        <div class="cert_course">
+          {{COURSE}}
+        </div>
+      </div>
+      <div class="cert_details">
+        <dl>
+          <dd>{{CERT_DATE_START}}</dd>
+          <dt>{{START}}</dt>
+        </dl>
+        <dl>
+          <dd>{{CERT_DATE_END}}</dd>
+          <dt>{{END}}</dt>
+        </dl>
+      </div>
+    </div>
+    <img class="cert_bg_img" src="https://dd.unicraft.org/static/branding/smokingshop/cert_custom/bg.png" />
+  </div>
+</body>
+
+</html>

+ 207 - 0
src/certificate/sptlab/index.html

@@ -0,0 +1,207 @@
+<!doctype html>
+<html>
+
+<head>
+  <meta charset="UTF-8">
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    body,
+    html {
+      height: initial;
+      width: initial;
+      font-size: 13px;
+      line-height: 1.3;
+      -webkit-box-sizing: border-box;
+      box-sizing: border-box
+    }
+
+    body {
+      background: #fff;
+      font-weight: 400;
+      margin: 0;
+      padding: 0
+    }
+
+    * {
+      -webkit-box-sizing: inherit;
+      box-sizing: inherit
+    }
+
+    .cert {
+      font-family: UCfont, "Open Sans", Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif;
+      font-weight: 400;
+      font-size: 13px;
+      background-repeat: no-repeat;
+      background-position: center;
+      background-size: cover;
+      background-color: #fff;
+      display: block;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 0;
+      padding: 4rem;
+      text-align: center;
+      position: relative;
+      height: 904px;
+      width: 1280px;
+    }
+
+    .cert_content {
+      position: absolute;
+      top: 0;
+      left: 0;
+      height: 100%;
+      width: 100%;
+      z-index: 200;
+    }
+
+    .cert_company {
+      position: absolute;
+      top: 48%;
+      left: 55%;
+      width: 20%;
+      height: 2rem;
+      font-size: 18px;
+      text-align: center;
+    }
+
+    .cert_student {
+      position: absolute;
+      top: 48%;
+      left: 26%;
+      width: 26%;
+      height: 2rem;
+      font-size: 18px;
+      text-align: center;
+    }
+
+    .cert_job {
+      position: absolute;
+      top: 55.3%;
+      left: 18%;
+      width: 64%;
+      height: 2rem;
+      font-size: 18px;
+      text-align: center;
+    }
+
+    .cert_course {
+      position: absolute;
+      top: 62.9%;
+      left: 10%;
+      width: 80%;
+      height: 2rem;
+      font-size: 18px;
+      text-align: center;
+    }
+
+    .cert_sign_info {
+      position: absolute;
+      top: 85.9%;
+      left: 26.5%;
+      width: 25%;
+      height: 2rem;
+      font-size: 18px;
+      text-align: center;
+    }
+
+    .cert_date {
+      position: absolute;
+      top: 85.9%;
+      left: 51.2%;
+      width: 25%;
+      height: 2rem;
+      font-size: 18px;
+      text-align: center;
+    }
+
+    .cert_bg_img {
+      position: absolute;
+      bottom: 0;
+      right: 0;
+      height: 100%;
+      width: 100%;
+      z-index: 100;
+    }
+  </style>
+</head>
+
+<body>
+  <div class="cert">
+    <div class="cert_content">
+      <div class="cert_student">{{STUDENT}}</div>
+      <div class="cert_company">{{STUDENT_COMPANY}}</div>
+      <div class="cert_job">{{STUDENT_JOB}}</div>
+      <div class="cert_date">{{END}}</div>
+      <div class="cert_course">Прошёл инструктаж в Центре развития компетенций ООО СТПСервис по курсу<br> &laquo;{{COURSE}}&raquo;</div>
+      <div class="cert_sign_info">{{SIGN_DESCR}}</div>
+    </div>
+    <img class="cert_bg_img" src="https://dd.unicraft.org/static/branding/sptlab/cert/bg.png" />
+  </div>
+</body>
+
+</html>

+ 334 - 0
src/certificate/transportir/index.html

@@ -0,0 +1,334 @@
+<!doctype html>
+<html>
+
+<head>
+  <meta charset="UTF-8">
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    body,
+    html {
+      height: initial;
+      width: initial;
+      font-size: 13px;
+      line-height: 1.3;
+      -webkit-box-sizing: border-box;
+      box-sizing: border-box;
+      margin: 0;
+      padding: 0;
+    }
+
+    body {
+      background: #fff;
+      font-weight: 400;
+      margin: 0;
+      padding: 0
+    }
+
+    * {
+      -webkit-box-sizing: inherit;
+      box-sizing: inherit
+    }
+
+    .cert {
+      font-family: UCfont, "Open Sans", Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif;
+      font-weight: 400;
+      font-size: 13px;
+      background-repeat: no-repeat;
+      background-position: center;
+      background-size: cover;
+      display: block;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      border: 1rem solid #2785ce;
+      padding: 4rem;
+      text-align: center;
+      position: relative;
+      width: 100%;
+      height: 100%;
+      z-index: 200;
+    }
+
+    .cert p {
+      margin: .5em 0
+    }
+
+    .cert_logo {
+      position: absolute;
+      top: 4rem;
+      left: 4rem
+    }
+
+    .cert_logo img {
+      max-height: 100px;
+      max-width: 250px
+    }
+
+    .cert_main {
+      position: absolute;
+      top: 45%;
+      left: 50%;
+      width: 80%;
+      -webkit-transform: translateY(-50%) translateX(-50%);
+      -ms-transform: translateY(-50%) translateX(-50%);
+      transform: translateY(-50%) translateX(-50%)
+    }
+
+    .cert_main p {
+      font-size: 1.1rem;
+      font-style: italic;
+      margin-top: .25em;
+      margin-bottom: .25em
+    }
+
+    .cert_company {
+      font-size: 1.25rem;
+      margin: 1rem;
+      white-space: pre
+    }
+
+    .cert_title {
+      font-size: 6.66667rem;
+      letter-spacing: 5px;
+      margin: 1rem;
+      text-transform: uppercase;
+      position: relative
+    }
+
+    .cert_title::after {
+      display: block;
+      content: "";
+      height: 1px;
+      width: 80%;
+      position: absolute;
+      bottom: 0;
+      left: 10%;
+      border-bottom: 1px solid #8c8c8c
+    }
+
+    .cert_student {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_course {
+      font-size: 2rem;
+      padding: 1rem;
+    }
+
+    .cert_comment {
+      color: #8c8c8c
+    }
+
+    .cert_details {
+      position: absolute;
+      bottom: 2rem;
+      left: 4rem;
+      color: #8c8c8c
+    }
+
+    .cert_details dd,
+    .cert_details dl,
+    .cert_details dt {
+      margin: 0;
+      padding: 0;
+      text-align: left;
+      letter-spacing: .025em
+    }
+
+    .cert_details dl {
+      padding: .5rem 0
+    }
+
+    .cert_details dd {
+      font-size: .85em
+    }
+
+    .cert_details dt {
+      font-size: 1.215em
+    }
+
+    .cert_sign {
+      position: absolute;
+      bottom: 2rem;
+      right: 4rem;
+      max-width: 50%;
+      text-align: right
+    }
+
+    .cert_sign_list {
+      display: -webkit-box;
+      display: -ms-flexbox;
+      display: flex;
+      -webkit-box-orient: horizontal;
+      -webkit-box-direction: normal;
+      -ms-flex-direction: row;
+      flex-direction: row;
+      -ms-flex-wrap: nowrap;
+      flex-wrap: nowrap;
+      max-width: none;
+      width: 50%;
+      -webkit-box-pack: end;
+      -ms-flex-pack: end;
+      justify-content: flex-end
+    }
+
+    .cert_sign_item {
+      width: 33%;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 0 10px
+    }
+
+    .cert_sign_info {
+      border-top: 1px solid #8c8c8c;
+      padding: .25rem;
+      font-size: .85em;
+      text-transform: uppercase;
+      color: #8c8c8c;
+      white-space: pre-line
+    }
+
+    .cert_sign_img {
+      padding: 5px
+    }
+
+    .cert_sign_img img {
+      height: 7rem;
+      max-width: 100%;
+      -o-object-fit: contain;
+      object-fit: contain;
+      -o-object-position: bottom;
+      object-position: bottom;
+      image-rendering: crisp-edges
+    }
+
+    .cert_bg_img {
+      position: absolute;
+      bottom: 0;
+      right: 0;
+      height: 100%;
+      width: 100%;
+      z-index: 100;
+      object-position: right top;
+      object-fit: contain;
+    }
+
+    .cert_wrapper {
+      position: relative;
+      height: 702px;
+      width: 1092px;
+      padding: 26px;
+      background-color: #fff;
+    }
+  </style>
+</head>
+
+<body>
+  <div class="cert_wrapper">
+    <div class="cert" style="border-color: {{BORDER_COLOR}}">
+    <!-- <div class="cert" style="border-color: #012169;"> -->
+      <div class="cert_logo">
+        <!-- <img src="{{LOGO}}" alt=""> -->
+        <img src="https://dd.unicraft.org/static/branding/transportir/cert/logo.png" />
+      </div>
+      <div class="cert_main">
+        <div class="cert_company">Academy TRANSPORTIR Group</div>
+        <!-- <div class="cert_company">{{COMPANY}}</div> -->
+        <div class="cert_title">{{CERT_TITLE}}</div>
+        <p>{{CERT_INTRO}}</p>
+        <div class="cert_student">
+          {{STUDENT}}
+        </div>
+        <p>{{CERT_COMPLETE_COURSE}}</p>
+        <div class="cert_course">
+          <div style=" {{COURSE_TITLE_STYLE}} ">{{COURSE}}</div>
+        </div>
+      </div>
+      <div class="cert_details">
+        <dl>
+          <dd>{{CERT_DATE_START}}</dd>
+          <dt>{{START}}</dt>
+        </dl>
+        <dl>
+          <dd>{{CERT_DATE_END}}</dd>
+          <dt>{{END}}</dt>
+        </dl>
+      </div>
+      <div class="cert_sign" {{SIGN_HIDE}}>
+        <div class="cert_sign_img">
+          <!-- <img src="{{SIGN_IMG}}"> -->
+          <img src="https://dd.unicraft.org/static/branding/transportir/cert/sign.png" />
+        </div>
+        <div class="cert_sign_info">{{SIGN_DESCR}}</div>
+      </div>
+    </div>
+    <img class="cert_bg_img" src="https://dd.unicraft.org/static/branding/transportir/cert/bg.png" />
+  </div>
+</body>
+
+</html>

+ 307 - 0
src/certificate/twelvemonth/index.html

@@ -0,0 +1,307 @@
+<!doctype html>
+<html>
+
+<head>
+  <meta charset="UTF-8">
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    body,
+    html {
+      height: initial;
+      width: initial;
+      font-size: 13px;
+      line-height: 1.3;
+      -webkit-box-sizing: border-box;
+      box-sizing: border-box
+    }
+
+    body {
+      background: #fff;
+      font-weight: 400;
+      margin: 0;
+      padding: 0
+    }
+
+    * {
+      -webkit-box-sizing: inherit;
+      box-sizing: inherit
+    }
+
+    .cert {
+      font-family: UCfont, "Open Sans", Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif;
+      font-weight: 400;
+      font-size: 13px;
+      background-repeat: no-repeat;
+      background-position: center;
+      background-size: cover;
+      background-color: #fff;
+      display: block;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 2rem;
+      border: 1rem solid #2785ce;
+      padding: 4rem;
+      text-align: center;
+      position: relative;
+      height: 50rem;
+      width: 80rem
+    }
+
+    .cert p {
+      margin: .5em 0
+    }
+
+    .cert_logo {
+      position: absolute;
+      top: 4rem;
+      left: 4rem
+    }
+
+    .cert_logo img {
+      max-height: 100px;
+      max-width: 250px
+    }
+
+    .cert_main {
+      position: absolute;
+      top: 45%;
+      left: 50%;
+      width: 80%;
+      -webkit-transform: translateY(-50%) translateX(-50%);
+      -ms-transform: translateY(-50%) translateX(-50%);
+      transform: translateY(-50%) translateX(-50%)
+    }
+
+    .cert_main p {
+      font-size: 1.1rem;
+      font-style: italic;
+      margin-top: .25em;
+      margin-bottom: .25em
+    }
+
+    .cert_company {
+      font-size: 1.25rem;
+      margin: 1rem;
+      white-space: pre
+    }
+
+    .cert_title {
+      font-size: 6.66667rem;
+      letter-spacing: 5px;
+      margin: 1rem;
+      text-transform: uppercase;
+      position: relative
+    }
+
+    .cert_title::after {
+      display: block;
+      content: "";
+      height: 1px;
+      width: 80%;
+      position: absolute;
+      bottom: 0;
+      left: 10%;
+      border-bottom: 1px solid #8c8c8c
+    }
+
+    .cert_student {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_course {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_comment {
+      color: #8c8c8c
+    }
+
+    .cert_details {
+      position: absolute;
+      bottom: 2rem;
+      left: 4rem;
+      color: #8c8c8c
+    }
+
+    .cert_details dd,
+    .cert_details dl,
+    .cert_details dt {
+      margin: 0;
+      padding: 0;
+      text-align: left;
+      letter-spacing: .025em
+    }
+
+    .cert_details dl {
+      padding: .5rem 0
+    }
+
+    .cert_details dd {
+      font-size: .85em
+    }
+
+    .cert_details dt {
+      font-size: 1.215em
+    }
+
+    .cert_sign {
+      position: absolute;
+      bottom: 2rem;
+      right: 4rem;
+      width: 30%;
+      text-align: right
+    }
+
+    .cert_sign_list {
+      display: -webkit-box;
+      display: -ms-flexbox;
+      display: flex;
+      -webkit-box-orient: horizontal;
+      -webkit-box-direction: normal;
+      -ms-flex-direction: row;
+      flex-direction: row;
+      -ms-flex-wrap: nowrap;
+      flex-wrap: nowrap;
+      max-width: none;
+      width: 50%;
+      -webkit-box-pack: end;
+      -ms-flex-pack: end;
+      justify-content: flex-end
+    }
+
+    .cert_sign_item {
+      width: 33%;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 0 10px
+    }
+
+    .cert_sign_info {
+      border-bottom: 1px solid #d1d1d1;
+      padding: .25rem;
+      font-size: .85em;
+      text-transform: uppercase;
+      color: #8c8c8c;
+      white-space: pre-line;
+      width: 100%;
+      height: 4rem;
+    }
+
+    .cert_sign_img {
+      padding: 5px
+    }
+
+    .cert_sign_img img {
+      height: 7rem;
+      max-width: 100%;
+      -o-object-fit: contain;
+      object-fit: contain;
+      -o-object-position: bottom;
+      object-position: bottom;
+      image-rendering: crisp-edges
+    }
+  </style>
+</head>
+
+<body>
+  <div class="cert" style="border-color: {{BORDER_COLOR}}">
+    <div class="cert_logo">
+      <img src="{{LOGO}}" alt="">
+    </div>
+    <div class="cert_main">
+      <div class="cert_company">{{COMPANY}}</div>
+      <div class="cert_title">{{CERT_TITLE}}</div>
+      <p>{{CERT_INTRO}}</p>
+      <div class="cert_student">
+        {{STUDENT}}
+      </div>
+      <p>{{CERT_COMPLETE_COURSE}}</p>
+      <div class="cert_course">
+        {{COURSE}}
+      </div>
+    </div>
+    <div class="cert_details">
+      <dl>
+        <dd>{{CERT_DATE_START}}</dd>
+        <dt>{{START}}</dt>
+      </dl>
+      <dl>
+        <dd>{{CERT_DATE_END}}</dd>
+        <dt>{{END}}</dt>
+      </dl>
+    </div>
+    <div class="cert_sign">
+      <div class="cert_sign_info"></div>
+      <div class="cert_sign_info"></div>
+    </div>
+  </div>
+</body>
+
+</html>

+ 309 - 0
src/certificate/uflor/index.html

@@ -0,0 +1,309 @@
+<!doctype html>
+<html>
+
+<head>
+  <meta charset="UTF-8">
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    body,
+    html {
+      height: initial;
+      width: initial;
+      font-size: 13px;
+      line-height: 1.3;
+      -webkit-box-sizing: border-box;
+      box-sizing: border-box
+    }
+
+    body {
+      background: #fff;
+      font-weight: 400;
+      margin: 0;
+      padding: 0
+    }
+
+    * {
+      -webkit-box-sizing: inherit;
+      box-sizing: inherit
+    }
+
+    .cert {
+      font-family: UCfont, "Open Sans", Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif;
+      font-weight: 400;
+      font-size: 13px;
+      background-repeat: no-repeat;
+      background-position: center;
+      background-size: cover;
+      background-color: #fff;
+      display: block;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 2rem;
+      border: 1rem solid #2785ce;
+      padding: 4rem;
+      text-align: center;
+      position: relative;
+      height: 50rem;
+      width: 80rem
+    }
+
+    .cert p {
+      margin: .5em 0
+    }
+
+    .cert_logo {
+      position: absolute;
+      top: 4rem;
+      left: 25%;
+      width: 50%;
+    }
+
+    .cert_logo img {
+      max-height: 100px;
+      max-width: 250px;
+      margin: 0 auto;
+    }
+
+    .cert_main {
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      width: 80%;
+      -webkit-transform: translateY(-50%) translateX(-50%);
+      -ms-transform: translateY(-50%) translateX(-50%);
+      transform: translateY(-50%) translateX(-50%)
+    }
+
+    .cert_main p {
+      font-size: 1.1rem;
+      font-style: italic;
+      margin-top: .25em;
+      margin-bottom: .25em
+    }
+
+    .cert_company {
+      font-size: 1.25rem;
+      margin: 1rem;
+      white-space: pre
+    }
+
+    .cert_title {
+      font-size: 6.66667rem;
+      letter-spacing: 5px;
+      margin: 1rem;
+      text-transform: uppercase;
+      position: relative
+    }
+
+    .cert_title::after {
+      display: block;
+      content: "";
+      height: 1px;
+      width: 80%;
+      position: absolute;
+      bottom: 0;
+      left: 10%;
+      border-bottom: 1px solid #8c8c8c
+    }
+
+    .cert_student {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_course {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_comment {
+      color: #8c8c8c
+    }
+
+    .cert_details {
+      position: absolute;
+      bottom: 2rem;
+      left: 4rem;
+      color: #8c8c8c
+    }
+
+    .cert_details dd,
+    .cert_details dl,
+    .cert_details dt {
+      margin: 0;
+      padding: 0;
+      text-align: left;
+      letter-spacing: .025em
+    }
+
+    .cert_details dl {
+      padding: .5rem 0
+    }
+
+    .cert_details dd {
+      font-size: .85em
+    }
+
+    .cert_details dt {
+      font-size: 1.215em
+    }
+
+    .cert_sign {
+      position: absolute;
+      bottom: 2rem;
+      right: 4rem;
+      max-width: 50%;
+      text-align: right
+    }
+
+    .cert_sign_list {
+      display: -webkit-box;
+      display: -ms-flexbox;
+      display: flex;
+      -webkit-box-orient: horizontal;
+      -webkit-box-direction: normal;
+      -ms-flex-direction: row;
+      flex-direction: row;
+      -ms-flex-wrap: nowrap;
+      flex-wrap: nowrap;
+      max-width: none;
+      width: 50%;
+      -webkit-box-pack: end;
+      -ms-flex-pack: end;
+      justify-content: flex-end
+    }
+
+    .cert_sign_item {
+      width: 33%;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 0 10px
+    }
+
+    .cert_sign_info {
+      border-top: 1px solid #8c8c8c;
+      padding: .25rem;
+      font-size: .85em;
+      text-transform: uppercase;
+      color: #8c8c8c;
+      white-space: pre-line
+    }
+
+    .cert_sign_img {
+      padding: 5px
+    }
+
+    .cert_sign_img img {
+      height: 7rem;
+      max-width: 100%;
+      -o-object-fit: contain;
+      object-fit: contain;
+      -o-object-position: bottom;
+      object-position: bottom;
+      image-rendering: crisp-edges
+    }
+  </style>
+</head>
+
+<body>
+  <div class="cert" style="border-color: {{BORDER_COLOR}}">
+    <div class="cert_logo">
+      <img src="{{LOGO}}" alt="">
+    </div>
+    <div class="cert_main">
+      <div class="cert_company">{{COMPANY}}</div>
+      <div class="cert_title">{{CERT_TITLE}}</div>
+      <p>{{CERT_INTRO}}</p>
+      <div class="cert_student">
+        {{STUDENT}}
+      </div>
+      <p>{{CERT_COMPLETE_COURSE}}</p>
+      <div class="cert_course">
+        {{COURSE}}
+      </div>
+    </div>
+    <div class="cert_details">
+      <dl>
+        <dd>{{CERT_DATE_START}}</dd>
+        <dt>{{START}}</dt>
+      </dl>
+      <dl>
+        <dd>{{CERT_DATE_END}}</dd>
+        <dt>{{END}}</dt>
+      </dl>
+    </div>
+    <div class="cert_sign" {{SIGN_HIDE}}>
+      <div class="cert_sign_img">
+        <img src="{{SIGN_IMG}}">
+      </div>
+      <div class="cert_sign_info">{{SIGN_DESCR}}</div>
+    </div>
+  </div>
+</body>
+
+</html>

+ 131 - 0
src/certificate/unicraft-split/index.html

@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="UTF-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Certificate</title>
+
+  <style>
+    html,
+    body {
+      padding: 0;
+      margin: 0;
+      font-family: serif;
+    }
+
+    td {
+      padding: 20px;
+      text-align: center;
+      border: 10px solid #eee;
+      overflow: hidden;
+    }
+
+    .details {
+      padding: 30px;
+    }
+
+    .details dl,
+    .details dd,
+    .details dt {
+      padding: 0;
+      margin: 5px;
+    }
+
+    .details dl {}
+
+    .details dd {
+      font-size: 10px;
+    }
+
+    .details dt {
+      font-size: 12px;
+      font-weight: bold;
+    }
+
+    .logo {
+      height: 100px;
+    }
+
+    .logo img {
+      max-height: 100px;
+      max-width: 400px;
+      display: block;
+      margin: 0 auto;
+    }
+
+    .sign {
+      width: 80%;
+      margin: 0 auto;
+    }
+
+    .sign img {
+      max-height: 50px;
+      max-width: 200px;
+      display: block;
+      margin: 20px auto;
+    }
+
+    .sign div {
+      margin-top: 10px;
+      padding-top: 10px;
+      border-top: 1px solid #eee;
+    }
+  </style>
+</head>
+
+<body>
+  <table style="width: 1090px; height: 710px; border-spacing: 10px; table-layout: fixed; overflow: hidden;">
+    <tr>
+      <td>
+        <div class="logo"><img src="{{LOGO}}"></div>
+        <div class="company">{{COMPANY}}</div>
+        <h1>{{CERT_TITLE}}</h1>
+        <p>{{CERT_INTRO}}</p>
+        <p>{{STUDENT}}</p>
+        <p>{{CERT_COMPLETE_COURSE}}</p>
+        <p>{{COURSE}}</p>
+        <div class="details">
+          <dl>
+            <dd>{{CERT_DATE_START}}</dd>
+            <dt>{{START}}</dt>
+          </dl>
+          <dl>
+            <dd>{{CERT_DATE_END}}</dd>
+            <dt>{{END}}</dt>
+          </dl>
+        </div>
+        <div class="sign">
+          <img src="{{SIGN_IMG}}">
+          <div>{{SIGN_DESCR}}</div>
+        </div>
+      </td>
+      <td>
+        <div class="logo"><img src="{{LOGO}}"></div>
+        <div class="company">{{COMPANY}}</div>
+        <h1>{{CERT_TITLE}}</h1>
+        <p>{{CERT_INTRO}}</p>
+        <p>{{STUDENT}}</p>
+        <p>{{CERT_COMPLETE_COURSE}}</p>
+        <p>{{COURSE}}</p>
+        <div class="details">
+          <dl>
+            <dd>{{CERT_DATE_START}}</dd>
+            <dt>{{START}}</dt>
+          </dl>
+          <dl>
+            <dd>{{CERT_DATE_END}}</dd>
+            <dt>{{END}}</dt>
+          </dl>
+        </div>
+        <div class="sign">
+          <img src="{{SIGN_IMG}}">
+          <div>{{SIGN_DESCR}}</div>
+        </div>
+      </td>
+    </tr>
+  </table>
+</body>
+
+</html>

+ 307 - 0
src/certificate/unicraft-v1/index.html

@@ -0,0 +1,307 @@
+<!doctype html>
+<html>
+
+<head>
+  <meta charset="UTF-8">
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    body,
+    html {
+      height: initial;
+      width: initial;
+      font-size: 13px;
+      line-height: 1.3;
+      -webkit-box-sizing: border-box;
+      box-sizing: border-box
+    }
+
+    body {
+      background: #fff;
+      font-weight: 400;
+      margin: 0;
+      padding: 0
+    }
+
+    * {
+      -webkit-box-sizing: inherit;
+      box-sizing: inherit
+    }
+
+    .cert {
+      font-family: UCfont, "Open Sans", Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif;
+      font-weight: 400;
+      font-size: 13px;
+      background-repeat: no-repeat;
+      background-position: center;
+      background-size: cover;
+      background-color: #fff;
+      display: block;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 2rem;
+      border: 1rem solid #2785ce;
+      padding: 4rem;
+      text-align: center;
+      position: relative;
+      height: 50rem;
+      width: 80rem
+    }
+
+    .cert p {
+      margin: .5em 0
+    }
+
+    .cert_logo {
+      position: absolute;
+      top: 4rem;
+      left: 4rem
+    }
+
+    .cert_logo img {
+      max-height: 100px;
+      max-width: 250px
+    }
+
+    .cert_main {
+      position: absolute;
+      top: 45%;
+      left: 50%;
+      width: 80%;
+      -webkit-transform: translateY(-50%) translateX(-50%);
+      -ms-transform: translateY(-50%) translateX(-50%);
+      transform: translateY(-50%) translateX(-50%)
+    }
+
+    .cert_main p {
+      font-size: 1.1rem;
+      font-style: italic;
+      margin-top: .25em;
+      margin-bottom: .25em
+    }
+
+    .cert_company {
+      font-size: 1.25rem;
+      margin: 1rem;
+      white-space: pre
+    }
+
+    .cert_title {
+      font-size: 6.66667rem;
+      letter-spacing: 5px;
+      margin: 1rem;
+      text-transform: uppercase;
+      position: relative
+    }
+
+    .cert_title::after {
+      display: block;
+      content: "";
+      height: 1px;
+      width: 80%;
+      position: absolute;
+      bottom: 0;
+      left: 10%;
+      border-bottom: 1px solid #8c8c8c
+    }
+
+    .cert_student {
+      font-size: 2rem;
+      padding: 1rem
+    }
+
+    .cert_course {
+      font-size: 2rem;
+      padding: 1rem;
+    }
+
+    .cert_comment {
+      color: #8c8c8c
+    }
+
+    .cert_details {
+      position: absolute;
+      bottom: 2rem;
+      left: 4rem;
+      color: #8c8c8c
+    }
+
+    .cert_details dd,
+    .cert_details dl,
+    .cert_details dt {
+      margin: 0;
+      padding: 0;
+      text-align: left;
+      letter-spacing: .025em
+    }
+
+    .cert_details dl {
+      padding: .5rem 0
+    }
+
+    .cert_details dd {
+      font-size: .85em
+    }
+
+    .cert_details dt {
+      font-size: 1.215em
+    }
+
+    .cert_sign {
+      position: absolute;
+      bottom: 2rem;
+      right: 4rem;
+      max-width: 50%;
+      text-align: right
+    }
+
+    .cert_sign_list {
+      display: -webkit-box;
+      display: -ms-flexbox;
+      display: flex;
+      -webkit-box-orient: horizontal;
+      -webkit-box-direction: normal;
+      -ms-flex-direction: row;
+      flex-direction: row;
+      -ms-flex-wrap: nowrap;
+      flex-wrap: nowrap;
+      max-width: none;
+      width: 50%;
+      -webkit-box-pack: end;
+      -ms-flex-pack: end;
+      justify-content: flex-end
+    }
+
+    .cert_sign_item {
+      width: 33%;
+      -webkit-box-flex: 0;
+      -ms-flex: none;
+      flex: none;
+      margin: 0 10px
+    }
+
+    .cert_sign_info {
+      border-top: 1px solid #8c8c8c;
+      padding: .25rem;
+      font-size: .85em;
+      text-transform: uppercase;
+      color: #8c8c8c;
+      white-space: pre-line
+    }
+
+    .cert_sign_img {
+      padding: 5px
+    }
+
+    .cert_sign_img img {
+      height: 7rem;
+      max-width: 100%;
+      -o-object-fit: contain;
+      object-fit: contain;
+      -o-object-position: bottom;
+      object-position: bottom;
+      image-rendering: crisp-edges
+    }
+  </style>
+</head>
+
+<body>
+  <div class="cert" style="border-color: {{BORDER_COLOR}}">
+    <div class="cert_logo">
+      <img src="{{LOGO}}" alt="">
+    </div>
+    <div class="cert_main">
+      <div class="cert_company">{{COMPANY}}</div>
+      <div class="cert_title">{{CERT_TITLE}}</div>
+      <p>{{CERT_INTRO}}</p>
+      <div class="cert_student">
+        {{STUDENT}}
+      </div>
+      <p>{{CERT_COMPLETE_COURSE}}</p>
+      <div class="cert_course">
+        <div style=" {{COURSE_TITLE_STYLE}} ">{{COURSE}}</div>
+      </div>
+    </div>
+    <div class="cert_details">
+      <dl>
+        <dd>{{CERT_DATE_START}}</dd>
+        <dt>{{START}}</dt>
+      </dl>
+      <dl>
+        <dd>{{CERT_DATE_END}}</dd>
+        <dt>{{END}}</dt>
+      </dl>
+    </div>
+    <div class="cert_sign" {{SIGN_HIDE}}>
+      <div class="cert_sign_img">
+        <img src="{{SIGN_IMG}}">
+      </div>
+      <div class="cert_sign_info">{{SIGN_DESCR}}</div>
+    </div>
+  </div>
+</body>
+
+</html>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 44 - 0
src/certificate/unicraft-v2/index.html


+ 167 - 0
src/certificate/zoopt/index.html

@@ -0,0 +1,167 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="UTF-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Certificate</title>
+
+  <style>
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Light.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-LightItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 300
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Regular.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Italic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 400
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Bold.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-BoldItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 700
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-Heavy.ttf) format("truetype");
+      font-style: normal;
+      font-weight: 800
+    }
+
+    @font-face {
+      font-family: UCfont;
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot);
+      src: url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.eot?#iefix) format("embedded-opentype"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff2) format("woff2"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.woff) format("woff"), url(https://dd.unicraft.org/style/fonts/ucfont/hinted-subset-Lato-HeavyItalic.ttf) format("truetype");
+      font-style: italic;
+      font-weight: 800
+    }
+
+    html,
+    body {
+      padding: 0;
+      margin: 0;
+      font-family: UCfont, "Open Sans", Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif;
+    }
+
+    td {
+      padding: 20px;
+      text-align: center;
+      border: none;
+      overflow: hidden;
+    }
+
+    table {
+      width: 1500px;
+      height: 1080px;
+      border-spacing: 0px;
+      table-layout: fixed;
+      overflow: hidden;
+      color: #575656;
+    }
+
+    .bgimg {
+      position: absolute;
+      height: 100%;
+      width: 100%;
+      z-index: 0;
+      left: 0;
+      top: 0;
+      background-color: #eee;
+    }
+
+    .content {
+      position: absolute;
+      z-index: 100;
+      width: 100%;
+      height: 100%;
+      top: 0;
+      left: 0;
+    }
+
+    .student {
+      font-size: 48px;
+      font-weight: bold;
+      line-height: 1.3;
+      position: absolute;
+      bottom: 55%;
+      width: 90%;
+      left: 5%;
+      text-align: center;
+      /* border-bottom: 3px solid currentcolor; */
+    }
+
+    .course {
+      font-size: 41px;
+      font-weight: bold;
+      line-height: 1.3;
+      position: absolute;
+      top: 38.4%;
+      width: 90%;
+      left: 5%;
+      text-align: center;
+      color: #39aa34;
+    }
+
+    .date {
+      bottom: 16%;
+      left: 23.5%;
+      text-align: left;
+      position: absolute;
+      font-size: 23px;
+      font-weight: bold;
+    }
+  </style>
+</head>
+
+<body>
+  <table>
+    <tr>
+      <td style="position: relative;">
+        <img src="https://dd.unicraft.org/static/branding/zoopt/cert_custom2/bg.png" class="bgimg">
+        <div class="content">
+          <p class="student">{{STUDENT}}</p>
+          <p class="course">c успехом окончил(а) курс &laquo;{{COURSE}}&raquo;</p>
+          <div class="date">{{END}}</div>
+        </div>
+      </td>
+    </tr>
+  </table>
+</body>
+
+</html>

+ 20 - 5
src/index.js

@@ -1,20 +1,35 @@
-import React, { Component } from 'react';
+import React, { Component, Fragment } from 'react';
 import ReactDOM from 'react-dom';
-import { brandingMapping, brandingObject } from './branding';
+import { brandingMapping, brandingObject, certTemplate } from './branding';
 
+const label = 'unicraft'
 class Dashboard extends Component {
     render() {
 
         const renderHeader = () => {
-            const BrandHeader = brandingMapping['firstdpo'];
-
+            const BrandHeader = brandingMapping[label];
             return <BrandHeader />;
         }
 
+        const renderCert = () => {
+
+            const cert = certTemplate(label)
+
+            console.log(cert);
+            
+            return cert.certLog;
+        }
 
         console.log(Object.keys(brandingObject));
 
-        return renderHeader();
+        return (
+            <Fragment>
+                <h1>Header</h1>
+                { renderHeader() }
+                <h1>Certificate</h1>
+                { renderCert() }
+            </Fragment>
+        )
     }
 }
 

+ 8 - 0
webpack.config.js

@@ -80,6 +80,14 @@ module.exports = mode => {
 			port: 3000,
 			open: true
 		},
+		node: {
+			fs: "empty"
+		},
+		stats: {
+			// One of the two if I remember right
+			entrypoints: false,
+			children: false
+		},
 		plugins: [
 			...(PROD ? [new CleanWebpackPlugin([outputDirectory])] : []),
 			new HtmlWebpackPlugin({