Avatar billede ircnoob Nybegynder
26. december 2009 - 18:34 Der er 7 kommentarer

Hvordan printer man lige html til en specifik printer

Hej,

jeg har brug for noget hjælp til hvordan jeg kan sende et printerjob  bestående af html til en specifik printer..

Jeg har kigget på http://www.codeproject.com/KB/printing/printhml.aspx og det ser egentlig helt fint ud, den kan godt printe min streng med html, men kun til default printer og synes ikke hacker løsningen med at skifte default printer er særlig fantastisk, så ville høre om nogen har et bud på hvordan jeg kan printe et dokument baseret på en html skabalon til en specifik printer.

tak
Avatar billede sirene52 Praktikant
26. december 2009 - 22:46 #1
Kan du ikke bare kopiere koden ind i f.eks. Word og printe derfra? Eller har jeg ikke forstået spørgsmålet korrekt?
Avatar billede Syska Mester
26. december 2009 - 23:00 #2
Google burde kunne løse problemet for dig, men virker som om du allerede har prøvet der.

Jeg er ret overbevist om at du kan få listet de printere der er på systemet ... og skifte dem programmatisk inden du sender dokumentet til din printeren.

Men hvad gør du pt ?
Avatar billede ircnoob Nybegynder
27. december 2009 - 00:38 #3
Som jeg antyder i mit indlæg gør jeg netop dette pt. jo, kan kun skifte default printer, men da jeg i mit program sender til 8 forskellige printere med forskellige jobs, er jeg meget ked af at sende af at skifte default printer da jeg frygter at det vil lede til fejl under vejs. Sirene, jeg kan ikke printe 30.000 sider ud sådan der..
Avatar billede Syska Mester
27. december 2009 - 01:20 #4
Ja ... jeg kan ikke sige andet end jeg har gjort det i .NET for mange år siden.

Hvor jeg selv lavede et "PrintintDocument" mener jeg det hed ... og smed det hen til en PDF Writer ... ( same same ) ... og virkede.

Men jeg kan ikke se hvordan du gør.

mvh
Avatar billede nejmann Nybegynder
29. december 2009 - 14:06 #5
Jeg har med succes tidligere brugt følgende fremgangsmåde til at udskrive på en bestemt tilknyttet printer:

PrintDocument pd = new PrintDocument();
// Specify the printer to use
pd.PrinterSettings.PrinterName = >>Printernavn<<;
Avatar billede ircnoob Nybegynder
04. januar 2010 - 10:32 #6
Hej nejmann,

hvordan printer du så en html fil/streng sådan der ?
Avatar billede nejmann Nybegynder
04. januar 2010 - 11:08 #7
Dette eksempel printer en rektangel ud - du skal selv kode layoutet...:

private void btn_Print_Click­(object sender, EventArgs e)
{
PrintDocument pd = new PrintDocument()­;
pd.PrintPage += new PrintPageEventH­andler(this.Pri­ntPageEvent);
pd.Print();
}
private void PrintPageEvent(­object sender, PrintPageEventA­rgs ev)
{
Font oFont = new Font("Arial", 10);
Rectangle marginRect = ev.MarginBounds­;

ev.Graphics.Dra­wRectangle(new Pen(System.Draw­ing.Color.Black­), marginRect);
ev.Graphics.Dra­wString(txt_Tex­t.Text, oFont, new SolidBrush(Syst­em.Drawing.Colo­r.Blue),
(ev.PageBounds.­Right / 2), ev.PageBounds.B­ottom / 2);
}

Du kan også printe en fil ud:

public void Printing(string printer) {
  try {
    streamToPrint = new StreamReader (filePath);
    try {
      printFont = new Font("Arial", 10);
      PrintDocument pd = new PrintDocument();
      pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
      // Specify the printer to use.
      pd.PrinterSettings.PrinterName = printer;

      if (pd.PrinterSettings.IsValid) {
        pd.Print();
      }
      else {   
        MessageBox.Show("Printer is invalid.");
      }
    }
    finally {
      streamToPrint.Close();
    }
  }
  catch(Exception ex) {
    MessageBox.Show(ex.Message);
  }
}
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

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