【问题标题】:How can I print a user selected document?如何打印用户选择的文档?
【发布时间】:2013-10-30 14:47:05
【问题描述】:

我想使用文件对话框选择一个文件,然后使用PrintDocument.Print 方法打印选定的文件。

下面是一些代码,它是我想要完成的部分实现:

     using System;
     using System.Drawing.Printing;
     using System.IO;
     using System.Windows.Forms;


     namespace InstalledAndDefaultPrinters
     {
     class Program
     {


     static void Main(string[] args)
     {   
        string filename="";
        foreach (string printer in PrinterSettings.InstalledPrinters)
            Console.WriteLine(printer);
        var printerSettings = new PrinterSettings();
        Console.WriteLine(string.Format("The default printer is: {0}", printerSettings.PrinterName));

        Console.WriteLine(printerSettings.PrintFileName); 
        OpenFileDialog fdlg = new OpenFileDialog();
        fdlg.Title = "Open File Dialog";
        fdlg.InitialDirectory = @"C:\ ";
        fdlg.RestoreDirectory = true;
        fdlg.ShowDialog();
        Console.WriteLine(fdlg.Title);
        if (fdlg.ShowDialog() == DialogResult.OK)
        {
            filename = String.Copy(fdlg.FileName);
        }
        Console.WriteLine(filename);

        PrintDialog printdg = new PrintDialog();
        PrintDocument pd_doc = new PrintDocument();
        printdg.ShowDialog();
        if (printdg.ShowDialog() == DialogResult.OK)
        {

此时我想打印所选文件。

            pd_doc.Print();
        }       
    }

我上面的代码显然不能满足我的需要。有什么替代方法可以引导我朝着正确的方向前进?

【问题讨论】:

    标签: c# .net winforms c#-4.0


    【解决方案1】:

    您可以使用以下代码 sn-p 解决该问题。它可以按您的意愿工作。

           private void button1_Click(object sender, EventArgs e)
            {
                PrintDialog printdg = new PrintDialog();
                if (printdg.ShowDialog() == DialogResult.OK)
                {
                    PrintDocument pd = new PrintDocument();
                    pd.PrinterSettings = printdg.PrinterSettings;
                    pd.PrintPage += PrintPage;
                    pd.Print();
                    pd.Dispose();
                }
            }
            private void PrintPage(object o, PrintPageEventArgs e)
            {
                System.Drawing.Image img = System.Drawing.Image.FromFile(@"C:\Users\therath\Desktop\372\a.jpg");
                // You can replace your logic @ here to load the image or whatever you want
                Point loc = new Point(100, 100);
                e.Graphics.DrawImage(img, loc);
            }
    

    【讨论】:

    • 不应该将pd 分配给printdg 选择的项目吗?
    • @Crud 嘿,你不认为 system.drawing.image 仅用于图像吗??
    • @MichaelJ.Gray 我认为 system.drawing.image 仅用于图像..你说什么兄弟?
    • @UmairAmin,你想打印什么样的文件?
    • @SuperPrograman word 文件,pdf 文件图像... excel..所有可以打印的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多