Hola
Si se puede usar la consola para imprimir no es necesario usar windows forms.
El codigo que posteaste esta incompleto.
Seria de esta forma:
Código:
using System;
using System.IO;
using System.Drawing;
using System.Drawing.Printing;
namespace prrooror
{
class Program
{
// Variables Globales
private Font printFont;
private StreamReader streamToPrint;
// Funcion Obtiene el objecto Graphics desde PrintPageEventArgs
// Se genera para cada pagina que se imprima
private void pd_PrintPage(object sender, PrintPageEventArgs ev)
{
Graphics g = ev.Graphics;
}
// Funcion Imprimir
void Printing(string printer)
{
try
{
streamToPrint = new StreamReader(@"Hola amigo.");
try
{
printFont = new Font("Arial", 10);
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
// Especifica la impresora a usar
pd.PrinterSettings.PrinterName = printer;
if (pd.PrinterSettings.IsValid)
{
pd.Print();
}
else
{
Console.WriteLine("Impresion Invalida.");
}
}
finally
{
streamToPrint.Close();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
} // Fin function
public static void Main(string[] args)
{
Console.WriteLine("Modo Consola");
Program o=new Program();
o.Printing("HP LaserJet Pro P1102w");
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
} // Fin programa principal
} // Fin clase
} // Fin namespace
En la funcion tienes que especificar el nombre de la impresora.
Saludos