0

Crystal からストリームに pdf ファイルをエクスポートしようとしているのですが、DotNetZip ライブラリを使用してそれら (合計 7 つ) を zip ファイルに追加したいと考えています。以下に1つ追加しようとしています。私は途方に暮れていると感じています。助けてください。

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 に答える