压缩pdf文档时无效的Zip存档

时间:2019-06-14 16:58:39

标签: c#

我有一些文档(pdf和html)为字节数组。现在,我必须创建这些文档的zip存档。压缩HTML可以正常工作,但是出于某种原因,pdf文档的zip存档均无效。

我已经尝试仅保存不带zip的PDF,它们工作得很好。

这是我创建Zip的代码:

byte[] buffer;
using (var memoryStream = new MemoryStream())
{
    using (var zip = new ZipArchive(memoryStream, ZipArchiveMode.Create))
    {
        var zipEntry = zip.CreateEntry(document.FileName);
        using (var binaryWriter = new BinaryWriter(zipEntry.Open()))
        {
            binaryWriter.Write(document.Content);
        }
    }

    buffer = memoryStream.GetBuffer();
}

2 个答案:

答案 0 :(得分:1)

如果要将该字节保存到文件中,或者以某种API返回它们,则可以将流用作该操作的源。

如果要保存到磁盘上的文件,请使用Stream.CopyTo传递新的FileStream。如果要在WebAPI中返回字节字节,请创建一个StreamContent并将其返回。

GetBuffer将返回流底层缓冲区,该缓冲区最终将包含未使用的字节。 ToArray将创建其他不必要的byte[]

答案 1 :(得分:0)

orhtej2指出GetBuffer()方法可能返回其他字节。要获取实际的缓冲区,您必须使用ToArray()