печать на принтер c#
От: -n1l-  
Дата: 17.07.15 17:04
Оценка:
Кто-нибудь делал печать на принтер пдфки, без предустановленного адоба и из стрима?
Подскажите пожалуйста в какую сторону копать? Облазил многое не нашел нормально работающего кода.
Re: печать на принтер c#
От: Albeoris  
Дата: 17.07.15 21:09
Оценка: +1
Здравствуйте, -n1l-, Вы писали:

N>Кто-нибудь делал печать на принтер пдфки, без предустановленного адоба и из стрима?

N>Подскажите пожалуйста в какую сторону копать? Облазил многое не нашел нормально работающего кода.
Нет, и делать это строго не рекомендуется. Установить бесплатный Acrobat Reader не составит труда (даже втихую, даже портабельный). А вот ошибки форматирования самописной реализации могут всплыть в самый неподходящий момент.
Но если желание выстрелить себе в ногу неистребимо — дерзай: http://habrahabr.ru/post/112707/

Ну, а после установки акробата это делается достаточно просто: http://stackoverflow.com/questions/6103705/how-can-i-send-a-file-document-to-the-printer-and-have-it-print
С учётом того что ты ограничен в первую очередь скоростью принтера, печать из потока не имеет практической ценности — создай временный файл и удали его после печати.
"Хаос всегда побеждает порядок, поскольку лучше организован." (с) Терри Пратчетт
Re: печать на принтер c#
От: Alexandr Sulimov Украина www.ase.com.ua
Дата: 18.07.15 06:33
Оценка:
Здравствуйте, -n1l-, Вы писали:

N>Кто-нибудь делал печать на принтер пдфки, без предустановленного адоба и из стрима?

N>Подскажите пожалуйста в какую сторону копать? Облазил многое не нашел нормально работающего кода.

Sumatra PDF

Аргументы командной строки
-print-to-default имя_файла.pdf распечатать PDF-файл на принтере по умолчанию
-print-to имя_принтера имя_файла.pdf распечатать PDF-файл на указанном принтере
Смелости хватает только под ником писать?
Re[2]: печать на принтер c#
От: Pavel Dvorkin Россия  
Дата: 18.07.15 12:39
Оценка:
Здравствуйте, Albeoris, Вы писали:

A>С учётом того что ты ограничен в первую очередь скоростью принтера, печать из потока не имеет практической ценности — создай временный файл и удали его после печати.


Скорость работы принтера не имеет к делу никакого отношения. Печать в Windows приложениии — это создание метафайла, который в дальнейшем будет подхвачен процессом спулинга и напечатан.
With best regards
Pavel Dvorkin
Re[3]: печать на принтер c#
От: -n1l-  
Дата: 20.07.15 02:05
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Скорость работы принтера не имеет к делу никакого отношения. Печать в Windows приложениии — это создание метафайла, который в дальнейшем будет подхвачен процессом спулинга и напечатан.


Вы как посоветуете?
Re[2]: печать на принтер c#
От: -n1l-  
Дата: 20.07.15 02:06
Оценка:
Здравствуйте, Albeoris, Вы писали:

A>Нет, и делать это строго не рекомендуется. Установить бесплатный Acrobat Reader не составит труда (даже втихую, даже портабельный). А вот ошибки форматирования самописной реализации могут всплыть в самый неподходящий момент.

A>Но если желание выстрелить себе в ногу неистребимо — дерзай: http://habrahabr.ru/post/112707/

A>Ну, а после установки акробата это делается достаточно просто: http://stackoverflow.com/questions/6103705/how-can-i-send-a-file-document-to-the-printer-and-have-it-print

A>С учётом того что ты ограничен в первую очередь скоростью принтера, печать из потока не имеет практической ценности — создай временный файл и удали его после печати.

Я так и делаю, но от адоба зависеть неохото.
Re[2]: печать на принтер c#
От: -n1l-  
Дата: 20.07.15 02:06
Оценка:
Здравствуйте, Alexandr Sulimov, Вы писали:

AS>Sumatra PDF


AS>Аргументы командной строки

AS>-print-to-default имя_файла.pdf распечатать PDF-файл на принтере по умолчанию
AS>-print-to имя_принтера имя_файла.pdf распечатать PDF-файл на указанном принтере

А как это в c# приложении использовать, я не пойму?
Re[3]: печать на принтер c#
От: Alexandr Sulimov Украина www.ase.com.ua
Дата: 20.07.15 06:17
Оценка:
Здравствуйте, -n1l-, Вы писали:

N>Здравствуйте, Alexandr Sulimov, Вы писали:


AS>>Sumatra PDF


AS>>Аргументы командной строки

AS>>-print-to-default имя_файла.pdf распечатать PDF-файл на принтере по умолчанию
AS>>-print-to имя_принтера имя_файла.pdf распечатать PDF-файл на указанном принтере

N>А как это в c# приложении использовать, я не пойму?


var loc = "";
ProcessStartInfo pi = new ProcessStartInfo();
pi.WorkingDirectory = loc;
pi.FileName = loc + "SumatraPDF.exe";
pi.Arguments = "-print-to \"" + printer + "\" " + loc + Filename;
pi.UseShellExecute = false;

Process p = new Process();
p.StartInfo = pi;
p.Start();
System.Threading.Thread.Sleep(2000);
File.Delete(loc + mp.Filename);
if (!p.HasExited)
{
        p.Kill();
        return "Error! Process killed, may be hanged";
}
Смелости хватает только под ником писать?
Re[4]: печать на принтер c#
От: Pavel Dvorkin Россия  
Дата: 20.07.15 08:28
Оценка:
Здравствуйте, -n1l-, Вы писали:

N>Вы как посоветуете?


В отношении Adobe ничего сказать не могу, не делал.
Саму печать — лучше или отдельного потока. Формирование этого метафайла не самая быстрая операция, и на время ее заморозите UI.
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.