Projekt: Maskengesteuertes Drucken



  • Hallo, ich wollte euch fragen, ob ihr mir einige Anregungen zu meinem neuen Projekt geben könnt. Es handelt sich um ein Framework zum maskengesteuerten Drucken aus Programmen heraus. Die Idee ist: Es gibt einen Editor mit dem man Druckmasken möglichst flexibel gestalten kann. Dieser erzeugt Druckmaskendateien. Der Entwickler, welcher das maskengesteuerte Drucken in sein Programm einbinden möchte bekommt eine Lib für die PrintEngine und eine Druckmaske. Dann braucht er nur die Maske mit den Variablennamen zu füllen und kann das ganze ausdrucken. Das ganze soll sowohl Formulare als auch Reports unterstützen... Ich suche niemanden der mir das coded oder dabei hilft (keine Angst 😉 ) sondern wollte nur mal ein paar Ratschläge sammeln. Diese Ratschläge können zu jedem Thema sein: Verwirklichung, UI, nützliche Features oder eventuell vorhandene Frameworks bei denen man sich etwas abschauen könnte. Bin schon gespannt 🙂 .

    CU,

    MaSTaH



  • Nette Idee :). Ich will dir vorschlagen, einen XML-DOM Renderer zu bauen. Das einfügen der Werte erfolgt einfach durch Veränderung von <template>-Elementen zu dem entsprechenden tatsächlichen Dingen - im DOM-Baum. Für Dinge wie Datensätze solltest du auch noch ermöglichen, "Prozeduren" zu erzeugen. Und auch Schleifen. Soviel zum Daten-Format. Ein Beispiel:

    <doc xmlns="http://mastah.org/mask/render" t:xmlns="http://mastah.org/mask/template">
      <head>
        <left><t:date t:value="now" /></left>
        <center><i><t:var t:id="company-name" /></i></center>
        <right>Seite <t:page t:style="%i von %m" /></right>
      </head>
      <foot>
        <center>Copyright (c) 2003 by <b><t:var t:id="company-name" /></b></center>
      </foot>
      <body>
        <t:define-macro t:id="record" t:param="i,name,price">
          <line>Item #<t:var t:id="i" />: <i><t:var t:id="name" /> für NUR <t:var t:id="price" /></line>
        </t:define-macro>
        <heading>Begin of listing:</heading>
        <t:for t:counter="i" t:start="0" t:stop="$item-count" t:value="record($i,$name[$i],$price[$i])"" />
        <i>That's it!</i>
      </body>
    </doc>
    


  • @Mr.N: Wirklich interessanter Vorschlag. So in etwa habe ich mir auch schon etwas überlegt. Ich glaube allerdings es wäre einfacher wenn man in einem WYSIWYG-Editor Teilbereiche per Mausklicks selber definieren kann und der Anwender/Programmierer später mit ein paar Befehlen seine Daten in meine Maske schickt und das Modul über diese Befehle, Variablen und Teilmasken zu einer Endlos-Seite zusammenbaut. Das Modul muss dann die Seiten intelligent splitten, mit Kopf und Fuß versehen und ausdrucken. Aber prinzipiell ist es nicht verkehrt eine Schnittstelle zu XML anzubieten um möglichst flexibel zu bleiben. Ich werde mir einmal einige Parser angucken (oder selbst einen kleinen schreiben, kann ja nicht sooo lange dauern)...



  • @Mastah: Ich dachte mir eigentlich, dass die Klickibunti-Schnittstelle XML-Dateien erzeugt...



  • Achso, ich hatte das jetzt so verstanden als ob du bei Editor an einen Texteditor dachtest. Ja, als Speicherformat XML zu verwenden ist bestimmt nicht schlecht 🙂 .



  • Schau Dir mal List & Label an. Die haben so etwas und das ist wirklich gut.
    Vielleicht kannst da ein wenig "klauen".



  • Danke, ich zieh mir grad mal ne Testversion. So auf den ersten Blick scheint das viele Features zu haben die kein Schwein braucht ;). Naja, man soll aber nicht urteilen bevor man es mit eigenen Augen gesehen hat...

    [ Dieser Beitrag wurde am 04.06.2003 um 09:05 Uhr von MaSTaH editiert. ]



  • So hab mir einen "Klickibunti"-Editor gebastelt. Hat jemand ne Ahnung wie ich am besten die Sache mit den Eigenschaften der einzelnen Objekttypen lösen könnte. Für jeden einzelnen ein paar PropertySheets zu machen in denen man das einstellen kann halte ich für sehr umständlich... 😞 🙂



  • @Mastah: Ich hätte es ja interessanter gefunden, zuerst den template-Parser, dann den Renderer (am besten nach Postscript oder PDF) und dann erst die Oberfläche zu basteln. Auf die Art und Weise weißt du dann auch eher, wie die Oberfläche aussehen muss.



  • Naja, die ist relativ flexibel gestaltet. Ich kann mich also morgen (oder übermorgen) an den Parser etc. begeben...
    EDIT: Ist es eigentlich aufwendig nach PDF zu rendern???

    [ Dieser Beitrag wurde am 04.06.2003 um 15:26 Uhr von MaSTaH editiert. ]



  • Ich hab esowas bereits unter Linux und WINDOWS geschrieben.
    Habe die Eigenschaften so gelöst. Mit einem Rechtsklick auf das Objekt.
    Da öffnet sich ein Fenster mit Standardwerten. (Schrift, Farbe, Ausrichtung etc.)
    Diese hat PropertySheets.
    Da man in Kommerziellen Projekten sowieso die Oberfläche nur einmal macht und die Ausgabedatei dann in einem Programm zum Drucken verwendet macht man das im Editor nicht so oft.



  • Ich habe mir für die Eigenschaften überlegt das Eigenschafts-ListCtrl aus VisualStudio.NET nach zu programmieren... Ist bestimmt relativ schnell erledigt und flexibel einsetzbar...



  • Original erstellt von Mr. N:
    dann den Renderer (am besten nach Postscript oder PDF)

    Hast du zufällig Infos wie ich am besten nach PDF oder PS exportieren kann? Ich hab die Doku von Adobe. Die ist aber ellenlang!



  • Original erstellt von MaSTaH:
    Ich habe mir für die Eigenschaften überlegt das Eigenschafts-ListCtrl aus VisualStudio.NET nach zu programmieren... Ist bestimmt relativ schnell erledigt und flexibel einsetzbar...

    Hast Du das schon gemacht , also fertig ? 🙂



  • Zur Hälfte. Hatte in den letzten 2 Wochen nicht so viel Zeit zum coden... Ich denke mal ich werde das ganze in eine DLL packen wenn es fertig ist.



  • Wäre es dann möglich das zu haben ? *lieb schau* 🤡

    Ich wollt mir sowas auch bauen, bin aber mangels Kentnissen in dem Bereich total gescheitert 😞



  • Mal schauen. Ist eigentlich für die Arbeit, aber ich kann dir ein paar Links zu vergleichbaren Controls geben... 🙂 Ich darf leider nicht einfach ein vorhandenes einbinden, deshalb muss ich das selber schreiben...
    http://www.codeproject.com/treectrl/coptiontree.asp http://www.codeproject.com/treectrl/proptree.asp http://www.codeproject.com/listctrl/propertylistctrl.asp



  • Ahhh... vielen Dank 🤡

    Würde mir Dein Ergebnis dennoch gerne mal anschauen, und wenns nur als exe is 🙂

    Dannggäää



  • @Mastah: Wie siehts eigentlich mit dem Rendering bislang aus?



  • @Mr.N: Komme gerade aus dem Urlaub. Habe bislang aber noch nicht viel zum PDF-Rendern gefunden. Ich überlege die ganze Zeit, ob es nicht sowieso sinnvoller wäre das ganze in ein Metafile zu rendern. In den MFC gibt es eine schöne Klasse namens CMetaFileDC



  • Knuddlbaer schrieb:

    Würde mir Dein Ergebnis dennoch gerne mal anschauen, und wenns nur als exe is 🙂

    Sorry, hab dein Posting erst ziemlich spät gelesen... *hust* (fast nen Monat später 🙄 😃 ). Hab dir mal ne Beispielexe online gestellt. Habs mit nem aktuellen Norton AntiVirus gecheckt, prüf's aber zur Sicherheit nochmal mit dem eigenen nach.


Anmelden zum Antworten