diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2014-04-22 19:00:14 +0200 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2016-08-15 19:46:55 +0200 |
| commit | 36e0263200787abc4368983fa708d782d3cc2779 (patch) | |
| tree | 7786119466b7d1cd23bddb7e51dec6f5bc6ef1c9 /js/index.js | |
| parent | b0999fb036aeac0da4145144c25349eecd376b07 (diff) | |
| download | wvs-vplan-36e0263200787abc4368983fa708d782d3cc2779.tar.gz wvs-vplan-36e0263200787abc4368983fa708d782d3cc2779.zip | |
extrahiere Text aus PDF
Diffstat (limited to 'js/index.js')
| -rw-r--r-- | js/index.js | 106 |
1 files changed, 105 insertions, 1 deletions
diff --git a/js/index.js b/js/index.js index 99d78ea..8bb0dd8 100644 --- a/js/index.js +++ b/js/index.js @@ -49,6 +49,69 @@ function fillform(){ } } +function parseVertretungen(str){ + var vertretungen_re = new RegExp('(\\w+)\\s+(\\d(?:\\s+-\\s+\\d)?)\\s+((?:x\\s+)?)(\\+|\\w+|---)\\s+(\\w+|---)\\s+(\\w+|---)\\s+(.*?)\\s+(\\w+)(?:\\s+)?(.*?)'); + var res; + var vertretungen = []; + + console.log(vertretungen_re.toString()); + + str.split('\n').forEach(function(vertretungsstr){ + res = vertretungsstr.match(vertretungen_re) + + if(res !== null){ + var klasse = res[1]; + var stunde = res[2].replace(/ /g, ''); + var entfall = res[3].indexOf('x') > -1; + var vertreter = res[4]; + var fach = res[5]; + var raum = res[6]; + var art = res[7]; + var lehrer = res[8]; + var info = res[9]; + + if(entfall == true){ + if(art.length <= 1){ + art = ""; + }else{ + art = " " + art; + } + + if(info.length <= 1){ + info = ""; + }else{ + info = " Info:" + info; + } + + vertretungen.push(klasse + " " + stunde + ". Stunde Entfall statt " + lehrer + art + info); + }else{ + if(art.length <= 1){ + art = ""; + }else{ + art = art + " in "; + } + + if(info.length <= 1){ + info = ""; + }else{ + info = " Info:" + info; + } + + var nlehrer; + + if(lehrer != vertreter){ + nlehrer = " bei " + vertreter + " (statt " + lehrer + ")"; + } + + vertretungen.push(klasse + " " + stunde + ". Stunde " + art + fach + nlehrer + " in Raum " + raum + info); + } + } + }); + + console.log(JSON.stringify(vertretungen)); + return vertretungen; +} + /* PDF Rendering */ function renderPage($div, pdf, pageNumber, callback){ pdf.getPage(pageNumber).then(function(page){ @@ -77,7 +140,48 @@ function renderPage($div, pdf, pageNumber, callback){ canvasContext: context, viewport: viewport }; - page.render(renderContext).promise.then(callback); + + page.render(renderContext).promise.then(function(pdf){ + page.getTextContent().then(function(textContent){ // Text extrahieren + var page_text = ""; + var last_block = null; + + for(j = 0; j < textContent.length; j++){ + var block = textContent[j]; + if(last_block != null && last_block.str[last_block.str.length - 1] != ' '){ + if(block.x < last_block.x){ + page_text += '\n'; + }else if(last_block.y != block.y && (last_block.str.match(/^(\s?[a-zA-Z])$|^(.+\s[a-zA-Z])$/) == null )){ + page_text += '\n'; + } + } + + page_text += block.str; + last_block = block; + } + + var highlights = []; + var vertretungen = parseVertretungen(page_text); + var username = getuserdata()[0]; + + if(username !== null){ + var klasse = username.match(/(\w+)_.*/); + + if(klasse !== null){ + vertretungen.forEach(function(vertretung){ + if(vertretung.indexOf(klasse[1]) > -1){ + hightlights.push(vertretung); + console.log('Wichtige Vertretung: ' + vertretung); + } + }); + } + } + + // TODO mach etwas mit den Vertretungen + }); + + callback(pdf); + }); }); } |
