Есть ли атрибут для C# System.Printing или аналогичный, который позволяет вам увидеть причину PrintJobStatus?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Есть ли атрибут для C# System.Printing или аналогичный, который позволяет вам увидеть причину PrintJobStatus?

Сообщение Anonymous »

Есть ли способ получить доступ к причине каждый раз, когда я выполняю это, статус задания — PrintJobStatus.Deleted? Это всегда происходит при печати чего-либо или это ошибка?

Код: Выделить всё

using System;
using System.IO;
using System.Linq;
using System.Printing;
using System.Text;

namespace PrintTest
{
class Program
{
static void Main(string[] args)
{
try
{
// Definir la ruta del archivo a imprimir
string filePath = @"C:\Downloads\prueba.pdf";

// Verificar si el archivo existe
if (!File.Exists(filePath))
{
Console.WriteLine("El archivo no existe.");
return;
}

// Leer el contenido del archivo
string textToPrint = File.ReadAllText(filePath);
Console.WriteLine("Archivo leído correctamente.");

// Llamar al método estático GetDefaultPrintQueue directamente desde LocalPrintServer
PrintQueue defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue();
Console.WriteLine("Impresora predeterminada obtenida.");

// Verificar si la impresora está en línea
if (defaultPrintQueue.IsOffline)
{
Console.WriteLine("La impresora está fuera de línea. Asegúrate de que esté encendida y conectada.");
return;
}

// Verificar si la impresora tiene errores
if (defaultPrintQueue.IsBusy)
{
Console.WriteLine("La impresora está ocupada. Espera a que termine el trabajo anterior.");
return;
}

// Verificar si hay trabajos en la cola que puedan indicar un error
if (defaultPrintQueue.GetPrintJobInfoCollection().Count() > 0)
{
Console.WriteLine("Hay trabajos en la cola de impresión.  Esperando a que se libere.");
return;
}

// Crear un trabajo de impresión en la cola predeterminada
PrintSystemJobInfo myPrintJob = defaultPrintQueue.AddJob("Impresión de archivo");
Console.WriteLine("Trabajo de impresión agregado a la cola.");

// Escribir en el flujo del trabajo de impresión
Stream myStream = myPrintJob.JobStream;
byte[] myByteBuffer = Encoding.Unicode.GetBytes(textToPrint);

// Escribir los datos en el flujo del trabajo de impresión
myStream.Write(myByteBuffer, 0, myByteBuffer.Length);
myStream.Close();

// Verificar el estado del trabajo de impresión
CheckPrintJobStatus(myPrintJob);

Console.WriteLine("Trabajo de impresión enviado correctamente.");

// Esperar una tecla antes de cerrar
Console.WriteLine("Presiona cualquier tecla para salir...");
Console.ReadKey();
}
catch (Exception ex)
{
Console.WriteLine("Error al crear el trabajo de impresión: " + ex.Message);
}
}

// Método para verificar el estado del trabajo de impresión
static void CheckPrintJobStatus(PrintSystemJobInfo printJob)
{
try
{
// Obtener el estado del trabajo de impresión
printJob.Refresh(); // Actualiza el estado del trabajo de impresión

// Imprimir varios atributos para obtener más detalles
Console.WriteLine($"Job ID: {printJob.JobIdentifier}");
Console.WriteLine($"Estado del trabajo: {printJob.JobStatus}");

// Verificar el estado del trabajo
switch (printJob.JobStatus)
{
case PrintJobStatus.Completed:
Console.WriteLine("El trabajo de impresión se completó correctamente.");
break;
case PrintJobStatus.Paused:
Console.WriteLine("El trabajo de impresión está en pausa.");
break;
case PrintJobStatus.Error:
Console.WriteLine("Hubo un error durante el proceso de impresión.");
break;
case PrintJobStatus.Deleted:
Console.WriteLine("El documento ha sido borrado.");
break;
default:
Console.WriteLine($"El trabajo de impresión está en estado: {printJob.JobStatus}");
break;
}
}
catch (IOException ioEx)
{
Console.WriteLine($"Error de entrada/salida: {ioEx.Message}");
}
catch (InvalidOperationException invalidOpEx)
{
Console.WriteLine($"Error de operación no válida: {invalidOpEx.Message}");
}
catch (Exception ex)
{
Console.WriteLine($"Error inesperado: {ex.Message}");
}
}
}
}
Я хочу знать, как узнать, есть ли в принтере бумага и чернила. Я попытался отправить его на принтер в поисках ошибки, но не могу продолжить

Подробнее здесь: https://stackoverflow.com/questions/792 ... ows-you-to
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Метод не найден: 'System.String System.String.Format(System.IFormatProvider, System.String, System.Object)
    Anonymous » » в форуме C#
    0 Ответы
    141 Просмотры
    Последнее сообщение Anonymous
  • Использование System.Drawing.Printing в C# вызывает ошибку
    Anonymous » » в форуме C#
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Сохранение PDF в C# System.Drawing.Printing
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • VS 2010 Beta 1 не распознает класс System.Printing.PrintTicket
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • System.Printing.PrintJobException: 'Произошло исключение при настройке задания на печать. Ошибка Win32: параметр неверен
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»