任务计划程序执行C# EXE时无法生成并附加PDF问题求助
问题:任务计划程序触发C# EXE时无法生成PDF附件,手动运行正常
我编写的C# EXE程序,手动运行时可以正常发送邮件并附带PDF文件,但通过Windows任务计划程序触发时,仅能发送邮件,无法生成并附加PDF文件。
生成PDF的代码片段
public static void ExportToPdF_Verify_report(DataTable myDataTable, DataTable dt2, string filename) { DataTable dt = myDataTable; Document pdfDoc = new Document(PageSize.A4.Rotate(), 10, 10, 35, 10); Font font13 = FontFactory.GetFont("ARIAL", 13); Font font18 = FontFactory.GetFont("ARIAL", 10, Font.BOLD); Font fonttext = FontFactory.GetFont("ARIAL", 10, Font.NORMAL); try { PdfWriter writer = PdfWriter.GetInstance(pdfDoc, new FileStream(filename, FileMode.Create)); pdfDoc.Open(); if (dt.Rows.Count > 0) { PdfPTable PdfTable = new PdfPTable(1); PdfTable.TotalWidth = 200f; PdfTable.LockedWidth = true; PdfPCell PdfPCell = new PdfPCell(new Phrase(new Chunk("", font18))); //PdfPCell PdfPCell = new PdfPCell(new Phrase(new Chunk("Manual Discrepancy Report", font18))); PdfPCell.Border = Rectangle.NO_BORDER; PdfTable.AddCell(PdfPCell); //DrawLine(writer, 25f, pdfDoc.Top - 30f, pdfDoc.PageSize.Width - 25f, pdfDoc.Top - 30f, new BaseColor(222,0,0)); //DrawLine(writer, 25f, pdfDoc.Top - 30f, pdfDoc.PageSize.Width - 25f, pdfDoc.Top - 30f, new BaseColor(0,0,0)); pdfDoc.Add(PdfTable); PdfTable = new PdfPTable(4); /* new PdfPTable(dt.Columns.Count); */ PdfTable.SpacingBefore = 20f; PdfTable.DefaultCell.BackgroundColor = BaseColor.LIGHT_GRAY; PdfPCell cell_heading = new PdfPCell(new Phrase(new Chunk("Coupon Verification Report", font18))); cell_heading.BackgroundColor = BaseColor.LIGHT_GRAY; cell_heading.MinimumHeight = 16; cell_heading.Colspan = 4; cell_heading.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right PdfTable.AddCell(cell_heading); PdfTable.DefaultCell.BackgroundColor = BaseColor.WHITE; //for (int columns = 0; columns <= dt.Columns.Count - 1; columns++) //{ // PdfPCell = new PdfPCell(new Phrase(new Chunk(dt.Columns[columns].ColumnName, font18))); // PdfTable.AddCell(PdfPCell); //} PdfTable.HorizontalAlignment = 1; int valid_amnt = 0; int excep_amnt = 0; for (int rows = 0; rows <= dt2.Rows.Count - 1; rows++) { valid_amnt = valid_amnt + int.Parse(dt2.Rows[rows][6].ToString()); excep_amnt = excep_amnt + int.Parse(dt2.Rows[rows][8].ToString()); } PdfTable.AddCell(new PdfPCell(new Phrase(new Chunk("Batch Id", font18)))); PdfTable.AddCell(new PdfPCell(new Phrase(new Chunk(dt.Rows[0][0].ToString(), fonttext)))); PdfTable.AddCell(new PdfPCell(new Phrase(new Chunk("Sap Code", font18)))); PdfTable.AddCell(new PdfPCell(new Phrase(new Chunk(dt.Rows[0][3].ToString(), fonttext)))); //pdfDoc.Add(PdfTable); PdfTable.AddCell(new PdfPCell(new Phrase(new Chunk("Distributor Name", font18)))); PdfTable.AddCell(new PdfPCell(new Phrase(new Chunk(dt.Rows[0][2].ToString(), fonttext)))); PdfTable.AddCell(new PdfPCell(new Phrase(new Chunk("State", font18)))); PdfTable.AddCell(new PdfPCell(new Phrase(new Chunk(dt.Rows[0][5].ToString(), fonttext)))); //pdfDoc.Add(PdfTable); PdfTable.AddCell(new PdfPCell(new Phrase(new Chunk("Batch Date", font18)))); PdfTable.AddCell(new PdfPCell(new Phrase(new Chunk(dt.Rows[0][1].ToString(), fonttext)))); PdfTable.AddCell(new PdfPCell(new Phrase(new Chunk("Valid Amount", font18)))); PdfTable.AddCell(new PdfPCell(new Phrase(new Chunk(valid_amnt.ToString(), fonttext)))); //pdfDoc.Add(PdfTable); PdfTable.AddCell(new PdfPCell(new Phrase(new Chunk("Scan Date", font18)))); PdfTable.AddCell(new PdfPCell(new Phrase(new Chunk(dt.Rows[0][4].ToString(), fonttext)))); PdfTable.AddCell(new PdfPCell(new Phrase(new Chunk("Exception Amount", font18)))); PdfTable.AddCell(new PdfPCell(new Phrase(new Chunk(excep_amnt.ToString(), fonttext)))); pdfDoc.Add(PdfTable); PdfTable = new PdfPTable(9); PdfTable.SpacingBefore = 20f; PdfTable.DefaultCell.BackgroundColor = BaseColor.LIGHT_GRAY; PdfPCell cell_heading2 = new PdfPCell(new Phrase(new Chunk("Detailed Summary", font18))); cell_heading2.BackgroundColor = BaseColor.LIGHT_GRAY; cell_heading2.MinimumHeight = 15; cell_heading2.Colspan = 9; cell_heading2.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right PdfTable.AddCell(cell_heading2); //for (int columns = 0; columns <= dt2.Columns.Count - 1; columns++) string[] arr_det = new string[] { "Coupon Type", "Claimed Coupon Count", "Claimed Coupon Amount", "Coupon Receipt Count", "Valid Coupon Count", "Valid Coupon Amount", "Exceptions Coupon Count", "Exceptions Coupon Amount", "Short/Excess Coupon Count" }; for (int columns = 0; columns < arr_det.Length; columns++) { PdfPCell = new PdfPCell(new Phrase(new Chunk(arr_det[columns], font18))); PdfTable.AddCell(PdfPCell); } for (int rows = 0; rows <= dt2.Rows.Count - 1; rows++) { //for (int column = 0; column <9; column++) //{ PdfPCell = new PdfPCell(new Phrase(new Chunk(dt2.Rows[rows][0].ToString(), fonttext))); PdfTable.AddCell(PdfPCell); PdfPCell = new PdfPCell(new Phrase(new Chunk(dt2.Rows[rows][2].ToString(), fonttext))); PdfTable.AddCell(PdfPCell); PdfPCell = new PdfPCell(new Phrase(new Chunk(dt2.Rows[rows][3].ToString(), fonttext))); PdfTable.AddCell(PdfPCell); PdfPCell = new PdfPCell(new Phrase(new Chunk(dt2.Rows[rows][4].ToString(), fonttext))); PdfTable.AddCell(PdfPCell); PdfPCell = new PdfPCell(new Phrase(new Chunk(dt2.Rows[rows][5].ToString(), fonttext))); PdfTable.AddCell(PdfPCell); PdfPCell = new PdfPCell(new Phrase(new Chunk(dt2.Rows[rows][6].ToString(), fonttext))); PdfTable.AddCell(PdfPCell); // int sums_exception = int.Parse(dt2.Rows[rows][8].ToString())+ int.Parse(dt2.Rows[rows][9].ToString())+ int.Parse(dt2.Rows[rows][10].ToString())+ int.Parse(dt2.Rows[rows][11].ToString()) + int.Parse(dt2.Rows[rows][12].ToString()) + int.Parse(dt2.Rows[rows][13].ToString()); PdfPCell = new PdfPCell(new Phrase(new Chunk(dt2.Rows[rows][7].ToString(), fonttext))); PdfTable.AddCell(PdfPCell); PdfPCell = new PdfPCell(new Phrase(new Chunk(dt2.Rows[rows][8].ToString(), fonttext))); PdfTable.AddCell(PdfPCell); PdfPCell = new PdfPCell(new Phrase(new Chunk(dt2.Rows[rows][9].ToString(), fonttext))); PdfTable.AddCell(PdfPCell); //} } PdfPCell = new PdfPCell(new Phrase(new Chunk("Total", font18))); PdfTable.AddCell(PdfPCell); string sum_colmns = sum_datatable_column(dt2, 2).ToString(); PdfPCell = new PdfPCell(new Phrase(new Chunk(sum_colmns, font18))); PdfTable.AddCell(PdfPCell); sum_colmns = sum_datatable_column(dt2, 3).ToString(); PdfPCell = new PdfPCell(new Phrase(new Chunk(sum_colmns, font18))); PdfTable.AddCell(PdfPCell); sum_colmns = sum_datatable_column(dt2, 4).ToString(); PdfPCell = new PdfPCell(new Phrase(new Chunk(sum_colmns, font18))); PdfTable.AddCell(PdfPCell); sum_colmns = sum_datatable_column(dt2, 5).ToString(); PdfPCell = new PdfPCell(new Phrase(new Chunk(sum_colmns, font18))); PdfTable.AddCell(PdfPCell); sum_colmns = sum_datatable_column(dt2, 6).ToString(); PdfPCell = new PdfPCell(new Phrase(new Chunk(sum_colmns, font18))); PdfTable.AddCell(PdfPCell); sum_colmns = sum_datatable_column(dt2, 7).ToString(); PdfPCell = new PdfPCell(new Phrase(new Chunk(sum_colmns, font18))); PdfTable.AddCell(PdfPCell); sum_colmns = sum_datatable_column(dt2, 8).ToString(); PdfPCell = new PdfPCell(new Phrase(new Chunk(sum_colmns, font18))); PdfTable.AddCell(PdfPCell); sum_colmns = sum_datatable_column(dt2, 9).ToString(); PdfPCell = new PdfPCell(new Phrase(new Chunk(sum_colmns, font18))); PdfTable.AddCell(PdfPCell); pdfDoc.Add(PdfTable); } pdfDoc.Close(); } catch(Exception ex) { // 原代码未提供异常处理逻辑 } }
已尝试的操作
- 设置任务计划为用户未登录时也能运行
- 在任务计划操作中添加了参数路径
- 检查了iTextSharp组件的引用和部署情况
- 适配Windows Server 2012 R2系统配置
内容的提问来源于stack exchange,提问作者jack papa
相关产品推荐
相关产品推荐

