Как редактировать свойства страницы во время печати | С#

Я создаю приложение с использованием C# и WinForm для управления файлами, печатаемыми пользователем. Как только я печатаю, я запускаю программу со следующим кодом. Для создания этого приложения я использовал инструкцию, показанную в ссылке ниже:

      private void OnJobStatusChanged(object Sender, PrintJobChangeEventArgs e)
        {
            MethodInvoker invoker = () =>
            {
                if (e.JobStatus == JOBSTATUS.JOB_STATUS_SPOOLING)
                {
                    bool res = PausePrintJob(printerList.Text.Trim(), e.JobID);
                    MessageBox.Show(res.ToString());
                }
                txtLogs.Text += e.JobID + " - " + e.JobName + " - " + e.JobStatus + '\n';
            };

            if (txtLogs.InvokeRequired)
            {
                Invoke(invoker);
            }
            else
            {
                invoker();
            }

        }

public static bool PausePrintJob(string printerName, int printJobID)
        {
            bool isActionPerformed = false;
            string searchQuery = "SELECT * FROM Win32_PrintJob";
            ManagementObjectSearcher searchPrintJobs =
                     new ManagementObjectSearcher(searchQuery);
            ManagementObjectCollection prntJobCollection = searchPrintJobs.Get();
            foreach (ManagementObject prntJob in prntJobCollection)
            {
                System.String jobName = prntJob.Properties["Name"].Value.ToString();
                //Job name would be of the format [Printer name], [Job ID]
                char[] splitArr = new char[1];
                splitArr[0] = Convert.ToChar(",");
                string prnterName = jobName.Split(splitArr)[0];
                int prntJobID = Convert.ToInt32(jobName.Split(splitArr)[1]);
                string documentName = prntJob.Properties["Document"].Value.ToString();
                if (String.Compare(prnterName, printerName, true) == 0)
                {
                    if (prntJobID == printJobID)
                    {
                        prntJob.InvokeMethod("Pause", null);
                        isActionPerformed = true;
                        break;
                    }
                }
            }
            return isActionPerformed;
        }`

Теперь проблема с программой в том, что после того, как пользователь дает команду на печать, мне иногда нужно распечатать страницы в черно-белом режиме, а иногда и в цвете. Я использовал следующую команду через powershell. Однако как только страница получит команду печати, результат не изменится.

      Set-PrintConfiguration -PrinterName "PRINTER NAME" -Color $false //or 0

Эта команда работала для новых файлов для печати. Но файлы, заказанные на печать, остаются в старых настройках. Мне нужно изменить свойства страницы после подачи команды печати. Я просмотрелAPI и другая документация, но решения я не нашел. Кто-нибудь может помочь?

0 ответов

Другие вопросы по тегам