Web-based Document Converter

Web-based Document Converter

Als Ziel meiner zweiten Independent Coursework wollte ich mich mit Frontend-Entwicklung und vorallem dem Verbinden von verschiedenen Programmier-Technologien auseinander setzen.

Anfangs gab es die Idee einen web-basierten Konverter zu entwickeln, der Skripte & Präsentationen (Latex, Word, OpenOffice) ein ein PDF umwandelt. Dabei wird das Dokument in ein gewähltes Coporate Desgin umgewandelt. Als Basis hierfür sollte pandoc verwendet werden.

Während des Semesters hat sich herausgestellt, dass pandoc zwar als Konverter universal verwendbar ist, allerdings das “Style-Umwandeln” in einem reinem Schreiben von Latex-Skripten geendet hätte. Bis dahin hatte ich bereits eine funktionierende Anwendung, die Dokumente in ein PDF konvertieren kann. Also überlegte ich mir einen weiteren Use-Case (ein Tool zum Erstellen von simplen Präsentationen, basierend auf Markdown), den ich in die Anwendung integrieren könnte, ohne meine Ziele zu ändern.

Die Motivation für den zweiten Use-Case kam aus meiner Vorliebe Markdown für alles Mögliche (Dokumentationen, Präsentationen, Notizen, uvm.) zu verwenden. Der Grundgedanke ist, den Markdown-Syntax Studenten näher zu bringen, vor allem in früheren Semestern.

Entstanden ist eine Applikation aus drei Teilen:

Während Python und die Entwicklung eines flask-Services nichts Neues für mich waren, hatte ich bisher kaum Erfahrung in React gesammelt oder generell in Frontend-Entwicklung. Hier wurde auch am meisten Zeit investiert (u.a. auch durch meine Unkenntnisse und Ungeduld mit CSS).

Als Basis für das gesamte Projekt wurde ein Python-Package entwickelt, welches Subprozess eröffnet, welche wiederum pandoc-Kommandos ausführen. Um die beinhaltenden Funktionalitäten der React-App zur Verfügung zu stellen, entwickelte ich eine “REST API” als flask-Server, die das Package verwendet.

Funktional kann man in der Web-Anwendung zum Einen Latex, Word oder OpenOffice-Writer Dokumente in ein PDF konvertieren, welches im HTW Berlin Corporate Design ist.

Zum Anderen kann man mithilfe von Markdown kleine Präsentationen erstellen, z.B. für einen AWE-Kurs oder die Darstellung kleiner Projekte innerhalb eines Kurses. Der Benutzer kann eine Titel-Folie erstellen und bis zu fünf einfache Folien, deren Inhalt als Markdown interpretiert wird.
Mein Ziel war es den Prozess so zu entwickeln, dass ein Benutzer, ohne jegliche Markdown-Kenntnisse, den Syntax schnell lernt und anwenden kann. Hierfür gibt es einen Live-Editor, der Markdown direkt in HTML umwandelt und der Benutzer so Änderungen sieht und verstehen kann.

Aus meiner zweiten Independent Coursework kann ich folgendes mitnehmen:

Ausprobieren könnt ihr die Anwendung in dem ihr den READMEs der folgendenen Repos folgt: Pandoc-Wrapper, flask-server, React-SPA.