You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

任务计划程序执行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 20:40:34