0

我在这个循环中基本上做错了什么。第一次通过循环,流工作正常,但随后通过循环失败,流被损坏。我知道可能正在做一些愚蠢的事情。我每次都尝试将 updateTemplate 设置为 0,但 InputStream 不支持搜索。我基本上是在此处将填写的多个表格附加到列表中。任何建议将不胜感激,尤其是那些会带来更好性能的建议。

...
files.Add(PDFhelper.fillTemplate(template, mappings));

foreach (Update u in myObject.Updates)
{
    mappings = this.GenerateFieldMappings(u);
    Stream output = new MemoryStream();
    template.CopyTo(output);
    files.Add(PDFhelper.fillTemplate(output, mappings)); //First time stream is good  

}

return PDFhelper.MergeFiles(files);

...
4

2 回答 2

0

好吧,这是我找到的一个解决方案。虽然,我觉得它不是很有效。它确实完成了工作。

files.Add(PDFhelper.fillTemplate(mainTemplate, mappings));
byte[] templateData = updateTemplate.ReadToEnd();

foreach (Update u in myobject.Updates)
{
    mappings = this.GenerateFieldMappings(u);
    MemoryStream output = new MemoryStream();
    output.Write(templateData, 0, templateData.Length);
    output.Position = 0;
    files.Add(PDFhelper.fillTemplate(output, mappings));

 }

 return PDFhelper.MergeFiles(files);
于 2012-11-07T22:59:44.140 回答
0

如果using在循环结束时添加关键字或添加 output.Dispose() 是否有效?请参阅此链接

files.Add(PDFhelper.fillTemplate(template, mappings));

foreach (Update u in myObject.Updates)
{
    mappings = this.GenerateFieldMappings(u);
    using(Stream output = new MemoryStream())
    {
        template.CopyTo(output);
        files.Add(PDFhelper.fillTemplate(output, mappings)); //First time stream is good
    }
}

return PDFhelper.MergeFiles(files);
于 2012-11-09T23:01:46.353 回答