Textbausteine auswählen und Text erstellen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Bellerophontes
User
Beiträge: 4
Registriert: Mittwoch 2. September 2009, 23:17

Hi

Ich will etwas in python programmieren, habe Grundkenntnisse, weiss aber im Moment noch keinen Lösungsweg. Ich würde euch gerne die Problemstellung beschreiben und hoffe, dass ihr mir den einen oder anderen Tipp geben könnt, wie ich vorgehen kann.

------------------------------------

Grundsätzlich geht es darum, auf einer html-Oberfläche (kann lokal sein, braucht keinen Webserver) mehrere Links zu haben, die auswählbar sind (checkbox). Wenn man auf den Link klickt, kommt man zu einer Unterseite mit einem Textbaustein. Der User kann jetzt mehrere der Checkboxen auswählen und klickt dann auf einen Button. Jetzt kommt der wichtige Teil: ;)
Das Programm erkennt jetzt, welche Checkboxen ausgewählt sind und übernimmt den Textbaustein aus der hinter dem ausgewählten Link liegenden Unterseite. Diese Textbausteine werden dann in einer Textdatei an der entsprechenden Stelle platziert (Latex-Template). Aus dem Latex-File wir ein Pdf generiert.

------------------------------------
Ich hoffe, dass das so halbwegs nachvollziehbar war. :D

Die Hauptseite kann man sich vorstellen wie ein Inhaltsverzeichnis, mit der Besonderheit, dass jeder Eintrag eine Checkbox hat. Wenn die Checkbox gewählt wird, wird der jeweilige Inhalt kopiert. Wenn also alle Links angeklickt werden, wird somit der gesamte Inhalt in ein pdf geschrieben.

------------------------

Freue mich auf euren Input, bin gespannt. Vermutlich ist es ja viel einfacher, als ich im Moment glaube. :mrgreen:
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@Bellerophontes: da bleiben noch viele Fragen offen.
1. sollen die Textbausteine alle an einem Stück in den Text eingefügt werden?
2. ist die Anzahl groß/klein, variabel/fix?
3. gibt es Freitextfelder (Name/Addresse)?
4. gibt es sich auschließende/ergänzende Textbausteine?
5. passen sich die Textbausteine nach Geschlecht/Anzahl an?

Am einfachsten und flexibelsten ist es eine Template-Engine zu benutzen. Bei LaTeX wäre es praktisch eine zu nehmen, wo man die Auszeichnungszeichen einstellen kann oder nicht { } sind. Bei einer überschaubaren Anzahl an Bausteinen kann man die ganze Logik dort hineinbauen. Vergiß für den Anfang, dass Du das über HTML steuern willst. Konzentriere Dich auf eine Funktion, die eine Auswahlliste bekommt und einen LaTeX-String zurückliefert. Danach baust Du die Umwandlung nach PDF drumherum und erst zum Schluß überlegst Du Dir, wie die Eingabe am besten zu realisieren ist.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Wieso soll es überhaupt so eine extrem spezifische Lösung sein? Zum Arbeiten mit Textbausteinen gibt es eine ganze Reihe von Werkzeugen wie z.B. TextExpander die du wesentlich flexibler und vorallem innerhalb deines Texteditors einsetzen kannst. Sobald mit deiner Lösung irgendwas nicht 100%ig passt, fängst du an einiges aufwendig umherzuschieben.

Wenn du einen Ansatz über eine HTML Oberfläche suchst braucht du übrigens schon einen Webserver, wenn du Python nutzen möchtest. Die Alternative wäre alles über Javascript im Browser zu machen, was allerdings auch durchaus sinnvoll sein könnte und definitiv ein besseres UI erlauben würde.
Bellerophontes
User
Beiträge: 4
Registriert: Mittwoch 2. September 2009, 23:17

Hi @Sirius3, danke für deine Antwort.
Zu deinen Fragen:
1. sollen die Textbausteine alle an einem Stück in den Text eingefügt werden?
>> Nein, es würde dazwischen jeweils Standardtext stehen, Überschriften, Beschreibungen, ...
2. ist die Anzahl groß/klein, variabel/fix?
>> Anzahl: 1-20 Textfelder (kann später mehr werden). Variabel
3. gibt es Freitextfelder (Name/Addresse)?
>> Nicht vorgesehen
4. gibt es sich auschließende/ergänzende Textbausteine?
>> In Version 3.0 :mrgreen:
5. passen sich die Textbausteine nach Geschlecht/Anzahl an?
>> Nein, neutral. Copy&Paste as-is.

Grundsätzlich stimme ich dir zu, dass die HTML-Geschichte ans Ende kommen sollte und ich mich erst auf die Logik konzentrieren sollte. Allerdings würde ich gerne einen Prototypen zusammen-frickeln, der den Workflow end-2-end aufzeigt, also: User wählt auf der Webseite die "Kapitel" aus, drückt den Button und hinten kommt ein pdf raus. Das kann sehr rudimentär sein, wenn die Idee ankommt, müsste ich dann eh von vorne anfangen und alles sauber entwickeln.
Bellerophontes
User
Beiträge: 4
Registriert: Mittwoch 2. September 2009, 23:17

DasIch hat geschrieben:Wieso soll es überhaupt so eine extrem spezifische Lösung sein? ...
Wenn du einen Ansatz über eine HTML Oberfläche suchst braucht du übrigens schon einen Webserver, wenn du Python nutzen möchtest. Die Alternative wäre alles über Javascript im Browser zu machen, was allerdings auch durchaus sinnvoll sein könnte und definitiv ein besseres UI erlauben würde.
Gute Frage, wahrscheinlich sind wir einfach so kompliziert. :roll:
Zum anderen möchte ich das Projekt für mich nutzen, um die Möglichkeiten von Python (ok, besser: Meine sehr beschränkten Möglichkeiten mit Python) auszuloten und zu verbessern.
BlackJack

@Bellerophontes: Das Stichwort Template-Engine wurde ja schon genannt. Wenn es eine Weboberfläche haben soll, dann würde sich eines der Mikrorahmenwerke wie Bottle oder Flask anbieten.
Bellerophontes
User
Beiträge: 4
Registriert: Mittwoch 2. September 2009, 23:17

Hallo zusammen

Danke für die Antworten - mit dem Stichwort template-engine komme ich sicher weiter. Ich versuche mal, einen Prototypen mit Jinja und Flask zu erstellen und mich so dem Thema anzunähern. Danke soweit. :)
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

wenn LaTeX nur Mittel zum Zweck ist, um an ein PDF zu kommen, dann würde ich direkt ReportLab nehmen und den Umweg über LaTeX sparen.

Gruß, noisefloor
BlackJack

@noisefloor: IMHO kommt das so ein bisschen auf die Art des Dokuments und die Qualität des Textsatzes an, die man haben möchte. Wenn man sich da beispielsweise Vertragstexte oder etwas ähnliches zusammenklicken können soll, zum Beispiel im Gegensatz zu Rechnungen, könnte die Qualität des Textsatzes schon einen Unterschied machen.
Antworten