Если ваш принтер подключен к сети и вы знаете, что это IP-адрес, возможно, можно отправить файл напрямую на принтер с помощью TcpClient. У меня это работает на моем принтере, но я пробовал его только для PDF-файлов, поэтому я не знаю, насколько хорошо это будет работать для других принтеров / типов файлов.
Вам нужно будет изменить настройки принтера, чтобы он был с использованием порта tcp (В устройствах и принтерах выберите ваш принтер (один щелчок), затем щелкните свойства сервера печати, в открывшемся окне мастера можно добавить новый порт TCP). Вам также нужно будет установить принтер на raw, а не lpc settings
Затем я использовал нечто похожее на следующий метод;
public void SilentPrint(string filePath, string printerIPAddress)
{
byte[] bytes = System.IO.File.ReadAllBytes(filePath);
var client = new TcpClient(printerIPAddress, 9100);//9100 is the default print port for raw data
using (var stream = client.GetStream())
{
stream.Write(bytes, 0, bytes.Length);
stream.Close();
}
}