Entwickler-Ecke

Basistechnologien - Per Befehl Html-Datei ausdrucken ?


Jamez - Mi 09.12.09 03:17
Titel: Per Befehl Html-Datei ausdrucken ?
Wie im Titel schon gefragt, suche ich nach der Möglichkeit eine Html-Datei auszudrucken per Knopfdruck ^^
Würde mich freuen wenn es dafür vielleicht einen simplen Befehl gibt.



Schonmal vielen Dank für die Antwort


JüTho - Mi 09.12.09 10:22

Nein, innerhalb von NET gibt es keinen derartigen Befehl. (Was und wie gedruckt werden kann, ist Sache eines Programms, das entscheidet, wie es mit bestimmten Dateien umzugehen hat, aber nicht die Sache des Betriebssystems oder einer Ergänzung dazu.) Es gibt (vereinfacht gesagt) nur zwei Wege:

1a. Öffne mit Process.Start ein Programm, das HTML ausdrucken kann; dem übergibst du geeignete Parameter, nämlich den Dateinamen und etwas wie "/p".

1b. Evtl. geht es noch schneller: Öffne mit Process.Start direkt diese Datei und übergib als Parameter "/p" oder "/print". Das entspräche dem Rechtsclick im Explorer mit der Auswahl "Print".

2. Der gesamte Druckvorgang wird mit PrintDocument manuell erledigt.

Gruß Jürgen

Danke, Daniel, für den Link!


danielf - Mi 09.12.09 10:28

Für die Variante 1b von JüTho gibt es ein CodeSnipple: http://dotnet-snippets.de/dns/c-beliebige-dateien-drucken-SID1061.aspx

Drucker-Auswahl müsstest du über den Default-Drucker machen.

Schöner ist die 2. Lösung (es gibt für die gänigen Formate meistens Assemblies die dir weiter helfen - leider auch viele kommerzielle).

Gruß Daniel


Jamez - Mi 09.12.09 14:12

vielen Dank für die Antworten, hat mir erstmal weitergeholfen :-)


Okay, gibt doch noch ein kleines Problem


Und zwar wenn ich


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
private static void PrintFile(string fullPath)
        {
            FileInfo fileInfo = new FileInfo(fullPath);

            if (!fileInfo.Exists)
            {
                throw new FileNotFoundException();
            }

            var printProcess = new Process();
            printProcess.StartInfo.FileName = fullPath;
            printProcess.StartInfo.UseShellExecute = true;
            printProcess.StartInfo.Verb = "print";
            printProcess.Start();
        }




benute, zeigt er mir bei var printProcess = new Process(); Process als Fehler an:

Der Typ- oder Namenspace "Process" konnte nicht gefunden werden


danielf - Mi 09.12.09 14:59

Die Fehlermeldung geht doch noch weiter oder?

Da steht drin woran es liegt.


Jamez - Mi 09.12.09 15:10

Fehlt eine Using-Direktive oder ein Assemblyverweis ?


Muss ich noch using System.xxx; hinzufügen ? ^^

Wenn ja was genau


danielf - Mi 09.12.09 15:14

Richtig :)

Die Klasse Process liegt im Namespace: System.Diagnostics

Wenn du die Klasse richtig schreibst (case sensitiv) zeigt VS, wenn dein Cursor auf dem Wort ist, unten rechts einen kleinen roten Balken an. Wenn du dort mit der Maus drüber gehst oder die Testenkombination Alt + Shift + F10 drückst bietet dir VS an, erstes ein using einzufügen oder zweites den kompletten Namespace einzufügen.

Finde diese Funktion extrem praktisch. Funktioniert auch um nicht existierende Methoden zu erstellen (Methodenkopf).

Gruß Daniel


JüTho - Mi 09.12.09 15:15

Schau in die SDK-Doku/MSDN/Hilfe. Bei jeder Klasse steht auf der Hauptseite "Informationen zur Xxx-Klasse" ganz oben, zu welchem Namespace (=> using) und DLL (=> Referenz) die Klasse gehört. Jürgen


Jamez - Mi 09.12.09 15:17

Ahh vielen dank, jetzt weiß ich auch gleich wo ich schauen muss :-)