c# - 在多个纸盘上打印文档
问题描述
我有一份文档,其中包含应打印在第三个托盘(公司模板纸)上的第一页。顺序页应打印在第二个纸盘(白纸)上。我已经阅读了https://chrizyuen.wordpress.com/2011/03/11/how-to-select-different-tray-for-different-page-for-printdocument-with-c/上的示例,它显示了如何完成这样的事情。但由于某种原因,纸源粘在纸盒 3 上。
这是我到目前为止所尝试的:
private static int _pageNum = 1;
private static PrintDocument _printDocument;
private static PrinterSettings _printerSettings;
private static PageSettings _pageSettings;
private static PrinterOption _printOptions;
private static int _totalpage;
private static void PrintDoc_QueryPageSettings(object sender, QueryPageSettingsEventArgs e)
{
switch (_pageNum)
{
case 1:
foreach (PaperSource paperSource in _printDocument.PrinterSettings.PaperSources)
{
if (_printOptions.FirstPageTraySource.ToLower()
.Equals(paperSource.SourceName.ToLower()))
{
e.PageSettings.PaperSource = paperSource;
}
}
break;
default:
foreach (PaperSource paperSource in _printDocument.PrinterSettings.PaperSources)
{
if (_printOptions.SequentialPageTraySource.ToLower()
.Equals(paperSource.SourceName.ToLower()))
{
e.PageSettings.PaperSource = paperSource;
}
}
break;
}
}
private static void PrintDoc_PrintPage(object sender, PrintPageEventArgs e)
{
e.HasMorePages = _pageNum < _totalpage;
_pageNum++;
}
private static bool PrintFromMultiTraySource(
byte[] pdfbytes,
string printername,
PrinterOption options)
{
try
{
// Create the printer settings for our printer
_printerSettings = GetPrinterSettings(printername, options);
_pageSettings = GetPageSettings(_printerSettings, options);
using (Stream stream = new MemoryStream(pdfbytes))
{
// Now print the PDF document
using (var document = PdfDocument.Load(stream))
{
_printDocument = document.CreatePrintDocument();
_printDocument.PrinterSettings = _printerSettings;
// _printDocument.DefaultPageSettings = _pageSettings;
//
_printDocument.PrintPage += PrintDoc_PrintPage;
_printDocument.QueryPageSettings += PrintDoc_QueryPageSettings;
_totalpage = document.PageCount;
_printOptions = options;
//print the first page
if (!printername.ToLower().Equals("debug"))
{
_printDocument.Print();
}
return true;
}
}
}
catch (Exception ex)
{
Serilog.Log.Error(ex, "Failed to print file");
}
return false;
}
解决方案
推荐阅读
- php - 安装 php gd 库后,Amazon EC2 实例不运行 codeigniter 应用程序
- c - 为什么 gcc 为每个函数创建一个新堆栈?
- mysql - 即使使用 GROUP BY,MySQL UNION 查询也会返回重复值
- arrays - 如何从 Excel 中的工作表列填充数组
- java - java从字符串中提取用逗号分隔的元素
- ngrx - Ngrx 复杂状态减速器
- python-3.x - RQ 调度程序抛出 NoRedisConnectionException
- debugging - 如何停止 gnatmake 内联函数?
- wpf - WPF:网格行在 GridSplitter 的相反方向上缩放
- c# - 网络大厅播放器图像在主机和其他客户端上不起作用