打印问题,然后删除文档

时间:2019-03-01 12:30:44

标签: c# printing

我有许多需要打印的JPG图片,然后将其删除。 Print方法是这样的:

 public void PrintJPG()
    {

       PrintDocument pd = new PrintDocument();            
       for (int i = 0; i < this.PathsJPG.Length; i++)
       {
          currentpath = getCurrentPath(i);
          pd.PrintPage += PrintPage;
          pd.Print();                
       }               

    }

    public static void PrintPage(object o, PrintPageEventArgs e)
    {
        System.Drawing.Image i = System.Drawing.Image.FromFile(currentpath);
        Rectangle m = e.MarginBounds;

        if ((double)i.Width / (double)i.Height > (double)m.Width / (double)m.Height) // 
        {
            m.Height = (int)((double)i.Height / (double)i.Width * (double)m.Width);
        }
        else
        {
            m.Width = (int)((double)i.Width / (double)i.Height * (double)m.Height);
        }
        e.Graphics.DrawImage(i, m);
    }

删除方法是这样

public void DeleteGenerateDoc()
    {
        FileInfo file; 
        foreach( string path in JpgPath)
        {
            file = new FileInfo(path);
            file.Delete();
        }            
    }

主要是这样:

static void Main(string[] args)
    {
        string[] PathJPG = array with path of the jpg files  // here is a function that return a array of jpg paths

        PrintJPG();          

        DeleteGenerateDoc();
    }

问题是我必须等待完成打印然后删除文档。我必须在代码中添加什么才能使程序等待打印完成,然后删除jpg文件?

1 个答案:

答案 0 :(得分:0)

我认为PrintDocument.Print()方法仅将文档发送到打印机队列。它不等待它实际打印。

但是您可以使用PrintDocument.EndPrint事件在页面打印后得到通知。您可以使用通知删除每个文件,然后将其打印出来。这是我以前的建议。

但是,如果您的程序仅执行此任务然后退出,则仍然无法运行。在这种情况下,您需要停止执行直到完成。这有点棘手,但是应该可以使用CountdownEvent来实现。

在您的情况下,可能看起来像这样:

stage.setFullScreen(true);

最后一行应阻塞您的程序,直到打印完所有页面为止。之后,您应该可以删除文件。