【问题标题】:Print multiple files with same printer setting使用相同的打印机设置打印多个文件
【发布时间】:2014-02-26 12:24:55
【问题描述】:

我目前正在打开PrintDialog,用户可以在其中选择打印机设置并进行打印。

目前我正在使用以下代码

var files = Directory.GetFiles(sourceFolder);
foreach (var file in files)
{
     var pdoc = new PrintDocument();

     var pdi = new PrintDialog
               {
                  Document = pdoc
               };
     if (pdi.ShowDialog() == DialogResult.OK)
      {
         pdoc.DocumentName = file;
         pdoc.Print();
      }
 }

有没有办法通过使用PrintDialog 一次将所有文件发送到打印机。那么用户可以选择文件夹,为文件夹内的所有文档设置一个打印设置,然后进行打印?

【问题讨论】:

    标签: c# .net winforms printdialog


    【解决方案1】:

    试试这个示例代码:

    var files = Directory.GetFiles(sourceFolder);
    if (files.Length != 0)
    {
        using (var pdoc = new PrintDocument())
        using (var pdi = new PrintDialog { Document = pdoc, UseEXDialog = true })
        {
            if (pdi.ShowDialog() == DialogResult.OK)
            {
                pdoc.PrinterSettings = pdi.PrinterSettings;
                // ************************************
                // Pay attention to the following line:
                pdoc.PrintPage += pd_PrintPage;
                // ************************************
                foreach (var file in files)
                {
                    pdoc.DocumentName = file;
                    pdoc.Print();
                }
            }
        }
    }
    
    // The PrintPage event is raised for each page to be printed.
    private void pd_PrintPage(object sender, PrintPageEventArgs ev)
    {
        string file = ((PrintDocument)sender).DocumentName; // Current file name 
        // Do printing of the Document
        ...
    }
    

    【讨论】:

    • 嘿,刚刚尝试打印文件。它确实打印,但纸上什么也没有。它只是空的!当我尝试打开文档并打印时,它确实打印得很好。我错过了什么吗?
    • PrintDialog 显示了吗?如果没有,设置对话框的属性UseEXDialog = true。我已经更新了示例以反映这一点。
    • 您还需要在pdoc.PrintPage 事件处理程序中实现打印。示例已更新。
    • 是的,出现了打印对话框,我可以设置打印机设置并打印。但输出是空纸
    • 请注意我更新的代码示例中的pdoc.PrintPage 事件处理程序。我已经通过 cmets 突出显示了它。测试时是否设置了此处理程序?
    猜你喜欢
    • 2014-07-04
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    相关资源
    最近更新 更多