【问题标题】:Create PDF and send mail on scheduled task fails创建 PDF 并在计划任务上发送邮件失败
【发布时间】:2014-07-11 23:12:52
【问题描述】:

我创建了一个计划任务,它应该从网站上抓取数据,将其存储在数据库中,创建每日 pdf 并发送每周邮件。

前 2 部分运行顺利,但似乎不管我尝试做什么,其他 2 部分都被跳过了。

创建文件不是问题,因为它会创建一个每日 .log 文件并写入该文件。

对于 pdf,我使用 PdfSharp 库,对于邮件,我使用 System.Net.Mail。

PDF

PdfDocumentRenderer renderer = new PdfDocumentRenderer(false, PdfFontEmbedding.Always);
renderer.Document = document;
renderer.RenderDocument();
string directory = DateTime.Now.Year.ToString();
if (!Directory.Exists(directory))
{
    Directory.CreateDirectory(directory);
}
string filename = directory + @"\NewCos" + DateTime.Now.DayOfWeek + ".pdf";
if (renderer.PageCount > 0)
    renderer.PdfDocument.Save(filename);

任何帮助将不胜感激。

【问题讨论】:

  • 你能说得更具体些吗?你能看到你的pdf文件吗?
  • 不,数据库插入完成后,不执行文件的创建和邮件的发送
  • 我将添加一个用于创建 pdf 的代码。
  • 哦...我正在使用 iTextSharp 创建 pdf,如果有帮助,请告诉我将代码发送给您。
  • 如果在一天结束时,它会起作用,我不介意重新设计我的程序

标签: c# scheduled-tasks iis-8 pdfsharp


【解决方案1】:

首先将 iTextSharp nuget Pack 添加到您的项目中

itextsharp

然后,要创建 pdf,您只需要执行以下操作:

  Document myDocument = new Document(PageSize.A4, -60, -40, 10, 10);
  PdfPTable MainTable = new PdfPTable(1);
  PdfPCell pdfTableCell11 = new PdfPCell(new Paragraph("Hellod PDF!", RegularFont10));
  MainTable.AddCell(pdfTableCell11);
  string path =  "C:\\Customer\\";
  PdfWriter.GetInstance(myDocument, new FileStream(path + "\\Invoice_" + DateTime.Now.DayOfWeek + ".pdf", FileMode.Create));
  myDocument.Open();
  myDocument.Add(MainTable);
  myDocument.Close();

如果您有一个复杂的 pdf,您可以通过在表格中创建表格来管理它...根据我的经验,最好有一个只有一个单元格的主表格(这是您的所有文档),然后创建任何欲望表格并将它们添加到此主表中。因此,每个部分可能有不同的“PdfPTable”,而不是“PdfPCell”。

【讨论】:

  • 顺便说一句...文档基本上是位于 iTextSharp.text 命名空间中的那个实例。
  • 感谢您的示例。本地一切正常,当我将其发布到服务器时,它完全一样。它不会创建文件
  • hmmm,首先这个进程在什么用户凭证下运行?检查该用户在服务器位置上的写入权限。
  • 具有最高权限的管理员权限。完整文件夹和子文件夹不是只读的
【解决方案2】:

这只是一些未安装的组件以及我使用相对路径iso固定目录设置的事实

【讨论】:

    猜你喜欢
    • 2010-10-02
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 2010-11-20
    • 2016-08-01
    • 1970-01-01
    相关资源
    最近更新 更多