我有一个C#应用程序当用户点击打印时,应用程序使用ITextSharp在内存流中创建PDF。我需要将此PDF自动打印到特定的打印机和纸盘。 我搜索过这个,但我能找到的只是使用javascript,但它不会打印到特定的托盘。 有没有人有这样做的例子? 谢谢。
答案 0 :(得分:3)
您可以使用此代码更改打印机托盘。
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 :)
答案 1 :(得分:2)
过去我花了很多时间在网上搜索将pdf文件打印到特定打印机托盘的解决方案。
我的要求是:从服务器目录中收集几个pdf文件,并将每个文件发送到循环中的不同打印机托盘。
所以我测试了很多第三方工具(试用版)和网络上的最佳实践。 通常所有的theese工具可分为两个类别:a)以直接方式将pdf文件发送到打印机(在UI中静默)或b)使用内置的pdf预览器在.Net-PrintDocument中打开pdf文件。
解决我的要求的唯一解决方案是来自veryPdf的PDFPrint(缺点:它不是无价的,但是我的公司买了它)。所有其他工具和解决方案都不可靠,这意味着:使用参数调用其打印例程,例如: id = 258(定义托盘2;从安装的打印机获取)但是在托盘3或pdf中打印pdf文件在打印预览器(UI)中打开,丢失的图像或完全空白的内容等等。
希望有所帮助。
答案 2 :(得分:1)