使用打印文档在C#中打印到文件

使用打印文档在C#中打印到文件,c#,printing,printdocument,C#,Printing,Printdocument,我正在创建C#应用程序,其中我使用外部类打印dataGridView。使用这个类,我可以打印文档pdf,但无法将文件保存到磁盘。我知道这可以通过printDocument1.PrinterSettings.PrintToFile=true和printDocument1.PrinterSettings.PrintFileName=path实现,但正如我提到的,我使用的是外部类,我无法做到这一点。我发布了我用来打印网格的代码,并且也发布了指向外部类的链接。请帮助我如何根据我的需要调整这个 DGVPr

我正在创建C#应用程序,其中我使用外部类打印
dataGridView
。使用这个类,我可以打印文档pdf,但无法将文件保存到磁盘。我知道这可以通过
printDocument1.PrinterSettings.PrintToFile=true
printDocument1.PrinterSettings.PrintFileName=path
实现,但正如我提到的,我使用的是外部类,我无法做到这一点。我发布了我用来打印网格的代码,并且也发布了指向外部类的链接。请帮助我如何根据我的需要调整这个

DGVPrinter printer = new DGVPrinter();
        //if (tbReportSchoolName.Text == string.Empty)
        //{ 
            printer.Title = "The Punjab School"; 
        //}
        //else { printer.Title = tbReportSchoolName.Text.Trim(); } //school name
        //if (tbReportHeader.Text == string.Empty)
        //{ 
            printer.SubTitle = "Absent Student Report | " + dtpTo.Value.ToShortDateString(); 
        //}
        //else { printer.SubTitle = tbReportHeader.Text.Trim() + "|" + dtpTo.Value.ToShortDateString(); }


        printer.SubTitleFormatFlags = StringFormatFlags.LineLimit | StringFormatFlags.NoClip;

        printer.PageNumbers = true;
        printer.PageNumberInHeader = false;
        printer.PorportionalColumns = true;
        printer.HeaderCellAlignment = StringAlignment.Near;
        //if (tbReportFooter.Text == string.Empty)
        //{ 
            printer.Footer = "Allied School, A Project of Punjab Group of Colleges."; 
        //}
        //else { printer.Footer = tbReportFooter.Text.Trim(); }
        printer.FooterSpacing = 15;
        printer.PrintDataGridView(reportGrid);
类名为DGVPrinter,网格名为dgv 课程链接:


我看不到DGVPrinter类中编写了任何用于打印到PDF或文件的代码。它具有AllowPrintToFile属性,但在类中没有使用它。您应该通过扩展此类自行编写,或者可以尝试以下其他插件:


您可以安装pdf打印机。谢谢回复@lordkain,但我正在创建一个自动化应用程序。这样就可以自动将文件保存到磁盘上,而无需用户单击。我只需要粘贴这两行代码的帮助,我不知道在课堂上我必须发布到哪里来解决我的问题是的,pdf文件没有代码,但有使用printDocument类打印的代码,您知道printDocument有一个名为printDocument.PrintToFile的属性,它将文件保存在磁盘中。请帮助我使用该属性,我进一步阅读了MSDN文档,发现不可能通过编程实现。请参阅以下链接:PrintToFile属性仅由PrintDialog使用,不能以编程方式设置。仅当PrintDialog.AllowPrintToFile属性设置为true时,PrintDialog上才会显示“打印到文件”选项。