C# печать данных в формате pdf с помощью Microsoft Print в файл программно без ввода имени файла - PullRequest
0 голосов
/ 05 февраля 2020

Итак, я хочу напечатать свое представление сетки данных в виде растрового изображения, используя Microsoft print to file и автоматически присвоить файлу имя и указать каталог. Печать моего datagridview на принтер работает. Всякий раз, когда я пытаюсь распечатать его в файл, я просто получаю пустую страницу. Как я могу заставить его печатать в файл вместо принтера.

// генерировать имя файла в качестве текущей даты / времени в unix формате отметки времени

                string file = (string)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 
                1))).TotalSeconds.ToString();

                // the directory to store the output.
                string directory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

                // initialize PrintDocument object
                PrintDocument printDocument1 = new PrintDocument()
                {

                    PrinterSettings = new PrinterSettings()
                    {
                        // set the printer to 'Microsoft Print to PDF'
                        PrinterName = "Microsoft Print to PDF",

                        // tell the object this document will print to file
                        PrintToFile = true,

                        // set the filename to whatever you like (full path)
                        PrintFileName = Path.Combine(directory, file + ".pdf"),
                    }
                };

                printDocument1.Print();



    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgse)
    {

        Bitmap bm = new Bitmap(this.dataGridView1.Width, this.dataGridView1.Height);
        dataGridView1.DrawToBitmap(bm, new Rectangle(0, 0, this.dataGridView1.Width, 
        this.dataGridView1.Height));
        e.Graphics.DrawImage(bm, 0, 0);
    }
...