For at printe en vilkårlig fil skal du starte en process med det associerede (i forhold til fil typen) program og angive at den skal printe. Dette gøres ved at angive at processen ikke skal åbne programmet men printe i stedet for (lidt lige som at højre klikke på dokumentet i stifinderen og vælge print).
private void printDoc(string document) { try { ProcessStartInfo pi = new ProcessStartInfo(); pi.FileName = document; pi.Verb = "Print"; pi.CreateNoWindow = true; pi.WindowStyle = ProcessWindowStyle.Hidden; Process p = pMyProc.Start(pi); } catch(Exception ex) { throw new Exception("printDoc fejlede under udskriften af "+document, ex); } }
Du kan evt. udvide funktionen til at "vente" på at processen afslutter.
Okay, for det første så kan du ikke kalde en "ikke" statisk funktion fra en statisk funktion (altså Main kan kun kalde statiske eller lokale klasse variablers funktioner).
Så enten ændre du din Main funktion til at oprette en variabel a type Class1 og bruger den til at kalde printDoc eller du ændre funktionen printDoc til at være statisk.
Ny Main: static void Main(string[] args) { Class1 cls = new Class1(); cls.printDoc(@"c:\tst\CV.doc"); }
Eller ny printDoc: class Class1 { [STAThread] static void Main(string[] args) { string doc; doc = "C:\\tst\\CV.doc"; printDoc(doc); }
private static void printDoc(string document) { try { ProcessStartInfo pi = new ProcessStartInfo(); pi.FileName = document; pi.Verb = "Print"; pi.CreateNoWindow = true; pi.WindowStyle = ProcessWindowStyle.Hidden; Process p = Process.Start(pi); } catch(Exception ex) { throw new Exception("printDoc fejlede under udskriften af "+document, ex); } } }
Nå, jeg finder en løsning på PDF problematikken. Men codefusion du har fortjent point for din løsning, kast et svar efter mig. Hvis du kan løse ovenstående samtigt er det super, hvis ikke har du fortjent dine point alligevel.
Jeg tror en løsning vist kan googles via ProcessStartInfo...
sorry, men jeg har desværrer ikke haft tid at svare før nu. PDF'en kan du lukke ved at stoppe proces'en (p.Kill();). Du kan desværrer ikke se hvornår den er færdig med at printe men du kunne evt. give den f.eks. 2 minutter inden du lukker proces'en.
Du bliver nok nød til at benytte standard printeren da det ikke er alle programmer hvor der kan angives hvilken printer de skal benytte.
Du kan evt. prøve følgende måde at udskrive en PDF fil på: printDoc("c:\test.pdf /t /p /h \"IndæstPrinterNavnHer\""); Denne måde her jeg ikke selv afprøvet. Men den virker ved at kalde adobe readeren med de ovenstående parameter. F.eks.: AcroRd32.exe /t /p /h c:\test.pdf "hp LaserJet 3380 PCL 6"
Du burde, via google, kunne finde noget kode til at ændre standard printeren.
Det virkede ikke helt med printDoc("c:\test.pdf /t /p /h \"IndæstPrinterNavnHer\"");, men jeg kigger lidt mere på det. Tak for din hjælp!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.