【问题标题】:File.WriteAllBytes generates one pdf fine, but multiple pdfs with errors?File.WriteAllBytes 可以生成一个 pdf,但是多个 pdf 有错误?
【发布时间】:2014-07-13 13:04:04
【问题描述】:

我有一个循环遍历一些数据并生成 pdf 文件。如果我自己生成一个 pdf,它可以正常工作(pdf 打开),但如果我创建 2 个 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();

}

【问题讨论】:

  • 您似乎在创建每个报告后将 pdf 保存到文件夹中。如果您将每个报告单独保存到文件夹中会怎样?

标签: c# asp.net .net pdf-generation itextsharp


【解决方案1】:

我猜 ChapterCount 应该像您在 for 循环结束时重置的所有其他变量一样重置为其初始值。

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

【讨论】:

  • ChapterCount 正在重置,就在循环的开始
猜你喜欢
  • 2014-05-22
  • 1970-01-01
  • 1970-01-01
  • 2018-11-06
  • 2016-10-14
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多