ShellExecute() "print"



  • Tag Zusammen
    Ich versuche gerade eine Tabelle (in einer einigermaßen schönen Form) zu drucken.
    Bis jetzt habe ich das so gemacht, dass ich mein Programm eine HTML erstellt habe lassen wo die Tabelle drin war und diese .html habe ich dann über ShellExecute("print"....) gedruckt. Funktioniert auch alles wunderbar. Doch wenn die html größer wird(können bis zu 10000 Zeilen werden) braucht er ewig bis er die läd und das "Druck" Fenster öffnet.
    Daher frage ich jetzt einfach mal ob einer eine Idee hat wie ich das besser machen könnte?
    Selber zeichnen und drucken wäre doch extrem aufwendig oder?

    MfG Tim



  • Ups - das ist prinzipiell keine so gute Idee das per HTML zu machen.

    1. Jeder Browser stellt es etwas anders dar
    2. zB IE kennt kaum vernünftige und standardkomforme Tabellenformatierung per CSS
    3. Es ist ein Schuß von hinten ins Auge.
    4. HTML-Tabellen mit 10.000 Zeilen sind, na ja, nicht von den Browsen "geplant" 😉

    Mache die Tabelle in einem Windows-Programm und drucke die dann über ein Programm aus.
    Das Windows-API kennt die notwendigen Befehle. Alternativ eine Textdatei die in
    Courier aus einem Editor ausgedruckt wird (zB Textpad etc).



  • Hi erstmal Danke für die schnelle Antwort.
    Ich weis selber das das mit der Html eigendlich nicht wirklich das wahre ist, aber das war das einzige was mir bis jetzt eingefallen ist, wie ich das mit der Tabelle hinkriege.
    Ich weiß nicht wie ich die Tabelle in der Win32Api "Zeichen" soll, da ich nicht wies wie groß die Strings sind, die in die einzelnen Kästchen eingetragen werden...
    Die .html hat die Kästchen von alleine angepast 🙂

    MfG und der Hoffnung auf weitere Hilfe
    Tim



  • Scheppertreiber schrieb:

    1. Jeder Browser stellt es etwas anders dar
    2. zB IE kennt kaum vernünftige und standardkomforme Tabellenformatierung per CSS

    Wenn es eine ganz normale schlichte Tabelle ohne irgendwelchen CSS und Grafik Schnickschnack ist, dürfte die jeder halbwegs anständige Browser jawohl gleich darstellen.



  • Die Darstellung macht mir keine Probleme. Doch wenn ich es über ShellExecute drucke braucht er erstmal ne weile um die.html zu erstellen und dann braucht der Browser ewig um sie zu laden.
    Alles in allem wäre es mir lieber wenn ich es direkt über das Programm drucken könnte. Nur krieg ich es da mit der Tabelle nicht hin....



  • Eine größere Anzahl über Shell- (und damit COM-) Umwege zu drucken...
    uffff, das ist nicht gerade ein empfehlenswerter Weg, wie Du ja selbst festgestellt hast.

    Du hast selbst nicht geschrieben, was genau für Inhalte Du drucken willst (nur Text, Tabelle, Fotos, 3D-Schriften, ... usw. )
    Deshalb nehme ich mal zunächst an, Du kannst ja erstmal mit reinem Text anfangen?

    Kein Problem, hier die Links von Tutorials (in deutsch!!!) die Dir weiterhelfen könnten:
    "Drucken mit der Win-API" http://www.michael-puff.de/Artikel/Drucken.shtml
    "Drucken" http://www.coding-help.de/drucken.html
    "Printing in Windows" http://www.catch22.net/tuts/printing (zwar englisch, aber pure Win32-API)

    Die deutschen Tuts sind zwar nicht in C (bzw. mit MFC) geschrieben, aber ich hoffe, Du bist in der Lage, die verwendeten Funktionsaufrufe auf Dein C-Programm anwenden zu können?

    HTH,
    Martin



  • Ja genau: Nur Text. Vielen Dank für die Links. Ich werd sie mir gleich mal ansehen.



  • Hab die Links jetzt zwar nur kurz überflogen aber wie es aussieht sind das alles Anleitungen zum Drucken (korrigiert mich bitte wenn ich damit falsch liege). Das Drucken ist nicht das Problem, sonder eine Tabelle zu Drucken wobei ich nicht von vorneherein festlegen kann wie groß die Spalten und die Zeilen sein sollen, da der Text zu Laufzeit vom Benutzer eingegeben wird...



  • Dann Volltreffer! 😃

    Vielleicht hast Du zufällig auch das Buch von Petzold "Windows Programmierung" ?
    Dann ist dort in Kap 13 dem Thema "Drucken" gewidmet!

    Martin



  • Hmmm, aber zumindestens die Anzahl der Spalten und Zeilen der Tabelle ist Dir bekannt?

    Innerhalb einer Zelle in der Tabelle mußt Du Dich wohl oder übel selbst um Textumbruch und Textausrichtung kümmern. Und damit daraus die erforderlichen Breite und Höhe der Tabellen berechnen.

    Das ist aber ein ganz anderes Thema!
    Ist es so?



  • Du hast es erfasst. Sorry ich hätte das ganz am Anfang besser beschreiben sollen...


Anmelden zum Antworten