Печать PDF без предварительного просмотра в C # - PullRequest
0 голосов
/ 12 августа 2011

Я пытаюсь распечатать файлы .pdf и .tif с помощью C # в приложении Windows.

Печать выполнена успешно, но моя проблема в том, что Adobe Reader открывается в фоновом режиме для файлов PDF, и открывается окно печати WindowsTIF файлы.

На самом деле я буду запускать свой метод с использованием службы, поэтому этот процесс должен происходить в режиме без вывода сообщений.Что я могу сделать, чтобы избежать этого?

Вот мой код

public void PrintDocument(string filepath)
        {

            //PrintDialog pd = new PrintDialog();            
            printProcess.StartInfo.FileName = filepath; 
            //Also tried usecellexcecution=false;
            //Redirect=true; something like this
            printProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            printProcess.StartInfo.Verb = "Print";
            printProcess.StartInfo.CreateNoWindow = true;
            PrinterSettings setting = new PrinterSettings();
            setting.DefaultPageSettings.Landscape = true; 
            printProcess.Start();
            printProcess.CloseMainWindow(); 
        }

Я пытался использовать RawprinterHelper, предложенный в MSDN, но он печатает ненужные символы.

Ответы [ 4 ]

1 голос
/ 30 апреля 2016

Если ваш принтер подключен к сети и вы знаете, что это 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();
        }
    }
1 голос
/ 12 августа 2011

Получите дескриптор окна процесса pdf и затем скройте его или используйте стиль окна класса процесса, чтобы минимизировать его.

Да, он запускается, потому что вы используете Process.Start.

0 голосов
/ 04 октября 2013

попробуйте "PrintTo" как ваш глагол. Это должно отключить этап «Предварительный просмотр».

0 голосов
/ 13 августа 2011

Если вы хотите распечатать PDF-файл без вывода сообщений, тогда вам нужно будет использовать подходящий инструмент для работы.В этом случае это не Adobe Reader, потому что он всегда запускает окно приложения, он не загружается в режиме без вывода сообщений.

Найдите библиотеку PDF, которая позволит без вывода сообщений печатать PDF-файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...