summaryrefslogtreecommitdiff
path: root/js/index.js
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2014-04-22 19:00:14 +0200
committerschneefux <schneefux+commit@schneefux.xyz>2016-08-15 19:46:55 +0200
commit36e0263200787abc4368983fa708d782d3cc2779 (patch)
tree7786119466b7d1cd23bddb7e51dec6f5bc6ef1c9 /js/index.js
parentb0999fb036aeac0da4145144c25349eecd376b07 (diff)
downloadwvs-vplan-36e0263200787abc4368983fa708d782d3cc2779.tar.gz
wvs-vplan-36e0263200787abc4368983fa708d782d3cc2779.zip
extrahiere Text aus PDF
Diffstat (limited to 'js/index.js')
-rw-r--r--js/index.js106
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);
+ });
});
}