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

  • 本文关键字:无效 Zip pdf 文档 压缩 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();
}

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

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

GetBuffer将返回流基础缓冲区,该缓冲区最终将包含未使用的字节。 ToArray将创建一个额外的不必要的byte[]

正如orhtej2指出的那样,GetBuffer()方法可能会返回额外的字节。要获得实际的缓冲区,您必须使用 ToArray() .

最新更新