Avatar billede jackass- Nybegynder
08. januar 2010 - 14:18 Der er 6 kommentarer og
1 løsning

Print fil til printer/plotter

Hej,

Hvordan sender man en fil til print både almindeligvis og plotter?

Det kan altså både være en simpel tekstfil som bare skal printes ud på en normal printer eller et bestemt format der sendes til en plotter (HP DesignJet 450C (D/A1) by HP).. som er side op og ned af sådan noget snask her:

PU20480,28000;
LBy0 = 23.86 mm;
PU20480,27000;
LBd0 = 140.00 mm;

Kan kun få den til at skrive en tom side ud.. så noget gør jeg helt sikkert forkert:



        private void DoPrint()
        {
            try
            {
                streamToPrint = new StreamReader(@"C:\Temp\plotter.txt");
                try
                {
                    PrintDocument pd = new PrintDocument();
                    pd.PrinterSettings.PrinterName = PrinterName;

                    pd.DocumentName = @"C:\Temp\plotter.txt";

                    if (pd.PrinterSettings.IsValid)
                        pd.Print();
                    else
                        WriteToEventLog("Printer is invalid.");
                }
                finally
                {
                    streamToPrint.Close();
                }
            }
            catch (Exception e)
            {
                WriteToEventLog("Error: " + e.Message);
            }
        }


Håber nogen kan hjælpe med en løsning? :-/
Avatar billede Syska Mester
11. januar 2010 - 01:45 #1
Godt ske at jeg spørger dumt ...

Men hvor angiver du indholdet af det du printer ?

Tror ikke at "DocumentName" er indholdet hvis du havde regnet med det.

Her et vist et par eksempler:
http://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument%28VS.71%29.aspx

// ouT
Avatar billede jackass- Nybegynder
11. januar 2010 - 07:11 #2
Ah ja, det har du ret i.. :-/

Men er der ikke en mere tilforladelig metode end den i eksemplet? Det er ligeså meget vektor-baserede 3D tegninger som det er tekst der skal skrives ud på plotteren.. og det kan jeg ikke lige helt se hvordan jeg skulle jeg gøre med pd_PrintPage() event handleren..
Avatar billede bvli Praktikant
11. januar 2010 - 12:18 #3
Sidder din printer direkte på parallelporten? Og er det du vil bare at skrive direkte til den udenom System.Drawing?

Hvis det er burde du kunne åbne en file stream til din LPT1 og til den fil du skal sende afsted og så læse fra din fil-stream og skrive til din lpt-stream.

Du skal bruge noget interop for at få en stream til din lpt-port, men kig evt. her: http://www.pinvoke.net/default.aspx/kernel32/CreateFile.html
Avatar billede jackass- Nybegynder
11. januar 2010 - 12:34 #4
Hej,

Det er ikke en printer direkte på parrallelporten, men derimod en TCP/IP port.. altså en netværksprinter.

Ehm.. jeg er lidt lost.. kan du give et kodeeksempel der peger i den rigtige retning (er ret ny i C#) :-/
Avatar billede bvli Praktikant
11. januar 2010 - 13:11 #5
Det burde kunne lade sig gøre alligevel. Men jeg skal erkende, at jeg ikke har den store erfaring på området og det kommer vel også an på hvilken printer der sidder i den anden ende. Har du evt. kigget på: http://www.codeproject.com/KB/printing/lpr.aspx
Avatar billede bvli Praktikant
15. januar 2010 - 14:25 #6
Fandt du nogensinde ud af det?

I forbindelse med noget helt andet kom jeg lige i tanke om den ellers udmærkede kommando "Print". Du vil måske kunne løse det nogenlunde så'n her:

string fileName = ditTemporæreFilnavn; //Her ligger dine data
string printer = @"\\serverNavn\PrinterNavn"; //Din netværksprinter

System.Diagnostics.Process.Start("print", string.Format(" /d:{0} {1}", printer, fileName));

[...]
Avatar billede jackass- Nybegynder
02. marts 2010 - 10:01 #7
Fik det til at virke med RAW format
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester