0

我正在尝试将 pdf 文件从 Crystal 导出到流,然后我想使用 DotNetZip 库将它们(总共 7 个)添加到 zip 文件中。我只是想在下面添加一个。我有一种感觉,我已经走了。请帮忙。

MemoryStream oStream;
CrystalDecisions.CrystalReports.Engine.ReportDocument rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();

if (a2batch.Count > 0) // a2batch - My Crystal Datasource List
{
    rpt.Load(Server.MapPath("~\\Report\\Construction\\ScheduleA2.rpt"));
    rpt.SetDataSource(a2batch);
    oStream = (MemoryStream)rpt.ExportToStream(ExportFormatType.PortableDocFormat);
    using (ZipFile zipFile = new ZipFile())
    {
        zipFile.AddEntry("Report.pdf", oStream);
        zipFile.Save("Report.zip");
    }
}
4

1 回答 1

0

您问题中的代码是否有效?如果是这样,最简单的可能是在添加其他流时打开 zip 文件:

using (ZipFile zip = ZipFile.Read(ExistingZipFile)) 

然后使用与您的问题相同的代码添加新文件,然后将其保存为:

zip.Save();

您可以随意向现有 zip 存档添加和删除文件。如果您在同一方法中创建所有流,也可以在关闭文件之前从多个流中添加数据,即在彼此之后添加多个 zip.AddEntry 语句。

于 2011-12-03T02:34:15.207 回答