-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
104 lines (92 loc) · 6.32 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<!DOCTYPE html>
<html lang="ru">
<head>
<title>Конвертер брайлевских кодировок</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.6.3.min.js" integrity="sha256-pvPw+upLPUjgMXY0G+8O0xUf+/Im1MZjXxxgOcBQBXU=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4" crossorigin="anonymous"></script>
<script src="./convert.min.js"></script>
</head>
<body>
<main id="main" style="margin: 50px 10%">
<div class="page-header">
<h1>Конвертер брайлевских кодировок</h1>
</div>
<p>С помощью данного сервиса вы сможете преобразовать подготовленный к печати по Брайлю файл из одной брайлевской кодировки в другую. Брайлевская кодировка — это набор символов, который используется для электронного представления точек Брайля. Исторически сложилось так, что разные страны и даже разные брайлевские издательства внутри одной страны используют разные наборы символов при подготовке электронных брайлевских макетов. Во многом это обусловлено используемым оборудованием, а также особенностями алфавита. Этот сервис призван решить проблему несовместимости брайлевских кодировок, когда необходимо распечатать файл, подготовленный для оборудования одного издательства, на оборудовании другого, либо прочитать этот файл с помощью дисплея Брайля.</p>
<hr>
<form name="args" action="" role="form" onsubmit="event.preventDefault(); generate(this.inFormat.value, this.outFormat.value, this.inText.files[0])">
<div class="mb-3">
<label for="inFormat" class="form-label">Исходный формат:</label>
<select name="inFormat" id="inFormat" class="form-select">
<option value="unicode">Braille Unicode</option>
<option value="brf">BRF (Braille ASCII)</option>
<option value="chtenie">ИПО "Чтение" ВОС</option>
<option value="logos">ИПТК "Логосвос"</option>
<option value="gost">ГОСТ Р 58511-2019</option>
</select>
</div>
<div class="mb-3">
<label for="inText" class="form-label">Файл для конвертации:</label>
<input type="file" name="inText" id="inText" class="form-control" required />
</div>
<div class="mb-3">
<label for="outFormat" class="form-label">Выходной формат:</label>
<select name="outFormat" id="outFormat" class="form-select">
<option value="unicode">Braille Unicode</option>
<option value="brf">BRF (Braille ASCII)</option>
<option value="chtenie">ИПО "Чтение" ВОС</option>
<option value="logos">ИПТК "Логосвос"</option>
<option value="gost">ГОСТ Р 58511-2019</option>
</select>
</div>
<input type="submit" class="btn btn-primary" value="Конвертировать" />
</form>
<div id="status" style="display: none;" tabindex="-1"></div>
</main>
<footer class="py-3 my-4">
<p class="text-center text-muted">© Андрей Якубой, 2022.</p>
<p>При поддержке Всероссийского сообщества сторонников рельефно-точечного шрифта Брайля «<a href="https://brl-aktiv.ru">Брайль-Актив</a>»</p>
<p>По всем вопросам: <a href="mailto:[email protected]">[email protected]</a>.</p>
<p><a href="https://github.com/Futyn-Maker/brlc-converter">Исходный код на GitHub</a></p>
</footer>
<script>
function generate(inFormat, outFormat, inText) {
let xhr = new XMLHttpRequest();
let inMap = inFormat;
if (inMap != "unicode") {
xhr.open("GET", `./data/${inFormat}.json`, false);
xhr.send();
inMap = JSON.parse(xhr.responseText);
}
let outMap = outFormat;
if (outMap != "unicode") {
xhr.open("GET", `./data/${outFormat}.json`, false);
xhr.send();
outMap = JSON.parse(xhr.responseText);
}
let reader = new FileReader();
reader.readAsBinaryString(inText); // For some reason, Jschardet detects the encoding wrong if ArrayBuffer is given instead of a string
reader.onload = function() {
let outText = convert(inMap, outMap, reader.result);
let fileName = inText.name.replace(/\.\w+$/, "");
if (outFormat == "unicode") {
fileName += ".txt";
} else {
fileName += `.${outMap.format}`;
}
let link = document.createElement("a");
link.download = fileName;
link.href = URL.createObjectURL(new Blob([outText.buffer]));
link.textContent = "Скачать файл";
document.getElementById("main").appendChild(link);
}
let status = document.getElementById('status');
status.removeAttribute('style');
status.innerHTML = "Конвертация завершена. Нажмите на ссылку ниже, чтобы скачать файл.";
status.focus();
}
</script>
</body>
</html>