C# File.writealBytes生成一个pdf文件,但生成多个pdf文件时出错?

C# File.writealBytes生成一个pdf文件,但生成多个pdf文件时出错?,c#,asp.net,.net,pdf-generation,itextsharp,C#,Asp.net,.net,Pdf Generation,Itextsharp,我有一个循环,它遍历一些数据并生成pdf文件。如果我自己生成一个pdf,它工作正常(pdf打开),但是如果我创建两个pdf文件,第一个会正常打开,但第二个会显示,并错误地说文件已损坏或类似。在流等的循环中是否有我做错的事情 foreach (report r reports) { byte[] pdf; ReportName = r.ReportName; switch (r.ReportId.ToLower()) { ca

我有一个循环,它遍历一些数据并生成pdf文件。如果我自己生成一个pdf,它工作正常(pdf打开),但是如果我创建两个pdf文件,第一个会正常打开,但第二个会显示,并错误地说文件已损坏或类似。在流等的循环中是否有我做错的事情

foreach (report r reports)
{
      byte[] pdf;
      ReportName = r.ReportName;

      switch (r.ReportId.ToLower())
      {
           case "pdf":
                pdfBuilder = new pdfHelper(candidate, 
                pdfTemplates[(Guid)case_report.TemplateId], r.XMLFieldData, DCFormats,  
                              r.ProjectReportName, dependants, DepCount, SpoCount);
                                            pdf = pdfBuilder.GenerateCasePDF();

           break;


        }
        //Add Bookmarks for each report in candidate
        ChapterCount++;
        ChapterReport = new Chapter(new Paragraph(case_report.ReportName), ChapterCount);
        tDoc.Add(ChapterReport);

        reader = new PdfReader(pdf);
        n = reader.NumberOfPages;

        for (int page = 1; page <= n; page++)
            copy.AddPage(copy.GetImportedPage(reader, page));

        copy.FreeReader(reader);
        reader.Close();
 }
 //Save pdf to folder
 ReportName = null;
 tDoc.Close();

 PubResult = outputStream.ToArray();

 File.WriteAllBytes(string.Format(@"{0}\{1}.pdf", JobRootPath, CaseFileName), PubResult);



  //Reset for next case
  outputStream = new MemoryStream();
  tDoc = new iTextSharp.text.Document();
  copy = new PdfSmartCopy(tDoc, outputStream);
  copy.ViewerPreferences = PdfWriter.PageModeUseOutlines;
  copy.SetFullCompression();
  tDoc.Open();

}
foreach(报告r报告)
{
字节[]pdf;
ReportName=r.ReportName;
开关(r.ReportId.ToLower())
{
案例“pdf”:
pdfBuilder=新的pdfHelper(候选、,
pdfTemplates[(Guid)case_report.TemplateId]、r.XMLFieldData、DCFormats、,
r、 项目报告名称、受抚养人、部门计数、SpoCount);
pdf=pdfBuilder.GenerateCasePDF();
打破
}
//为候选中的每个报告添加书签
ChapterCount++;
ChapterReport=新章节(新段落(case_report.ReportName),章节数);
tDoc.Add(ChapterReport);
阅读器=新的pdf阅读器(pdf);
n=reader.NumberOfPages;
for(int page=1;page我猜ChapterCount应该重置为初始值,就像在for循环结束时重置的所有其他变量一样


除此之外,我建议将for循环的主体和所有相关变量移动到一个新方法中。重复使用变量往往会导致这样的错误。

在创建每个报表后,您似乎正在将pdf保存到文件夹中。如果您将每个报表单独保存到文件夹中会怎么样?章数正在重置,仅在开始时循环中的