Автоматическая печать PDF на определенный принтер и лоток - PullRequest
2 голосов
/ 26 января 2011

У меня есть приложение на C #, которое, когда пользователь нажимает кнопку «Печать», создает файл PDF в потоке памяти с помощью ITextSharp. Мне нужно распечатать этот PDF автоматически на определенный принтер и лоток. Я искал это, но все, что я могу найти, это использовать javascript, но он не печатает в определенный лоток У кого-нибудь есть примеры этого? Спасибо.

Ответы [ 3 ]

3 голосов
/ 14 февраля 2012

С помощью этого кода вы можете изменить лоток принтера.

string _paperSource = "TRAY 2"; // Printer Tray
string _paperName = "8x17"; // Printer paper name

//Tested code comment. The commented code was the one I tested, but when 
//I was writing the post I realized that could be done with less code.

//PaperSize pSize = new PaperSize()  //Tested code :)
//PaperSource pSource = new PaperSource(); //Tested code :)

/// Find selected paperSource and paperName.
foreach (PaperSource _pSource in printDoc.PrinterSettings.PaperSources)
if (_pSource.SourceName.ToUpper() == _paperSource.ToUpper())
{
printDoc.DefaultPageSettings.PaperSource = _pSource;
//pSource = _pSource; //Tested code :)
break;
}
foreach (PaperSize _pSize in printDoc.PrinterSettings.PaperSizes)
if (_pSize.PaperName.ToUpper() == _paperName.ToUpper())
{
printDoc.DefaultPageSettings.PaperSize = _pSize;
//pSize = _pSize; //Tested code :)
break;
}

//printDoc.DefaultPageSettings.PaperSize = pSize; //Tested code :)
//printDoc.DefaultPageSettings.PaperSource = pSource;    //Tested code :)
2 голосов
/ 09 октября 2014

В прошлом я тратил много времени на поиск в Интернете решений для печати PDF-файлов на определенные лотки для принтеров.

Мое требование было: собрать несколько файлов PDF из каталога сервера и отправить каждый файл в отдельный лоток принтера в цикле.

Итак, я протестировал множество сторонних инструментов (проб) и лучшие практики, найденные в сети. Как правило, все эти инструменты можно разделить на две категории: а) отправлять PDF-файлы на принтер прямым способом (без вывода сообщений в пользовательском интерфейсе) или б) открывать PDF-файлы в пользовательском интерфейсе с помощью встроенного средства предварительного просмотра PDF, работающего с .Net-PrintDocument.

Единственным решением, которое исправило мое требование, была PDFPrint от veryPdf (недостаток: он не бесценный, но моя компания его купила). Все остальные инструменты и решения не работали надежно, что означает: вызов их подпрограмм печати с параметром, например, id = 258 (определяет лоток 2; извлекается из установленного принтера), но при печати файла PDF в лотке 3 или в окне предварительного просмотра печати (UI) был открыт файл PDF с потерянными изображениями или полностью пустым содержимым и т. д.

Надеюсь, это немного поможет.

1 голос
/ 26 января 2011

Существует инструмент pdfprint:

http://www.verypdf.com/pdfprint/index.html

И здесь обсуждаются некоторые решения:

http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/da99765f-2706-4bb6-aa0e-b90730294cb4

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