首页 文章

如何使用System.IO.Compression.ZipArchive创建ePub?

提问于
浏览
1

我已经使用.NET 4.5 System.IO.Compression.ZipArchive编写了一些生成ePub存档的代码 . 我需要它成为可移植类库(PCL)的一部分,因此使用.NET fx的子集 .

我对包含魔术'application / epub zip'的mimetype文件有疑问 . 阅读完规范后,我首先添加该文件而不进行压缩 .

尽管如此,生成的ePub存档不符合规范 . 规范要求mimetype文件的内容应该从位置38开始 . 我从位置47开始 .

ZipArchive本身没有任何参数,ZipArchiveEntry只能通过压缩模式进行参数化 . 我有点困惑,因为我认为Zip文件有多种,我不明白是什么影响了这种特定的行为 .

作为参考,以下是ePub示例的第一部分(工作即可):

enter image description here

这是我的:

enter image description here

2 回答

  • 2

    您没有将压缩方法设置为“无压缩” . 数据的字节9-10用于压缩方法,对于工作文件,它应该是00,但在你的情况下它们被设置为8 - 'deflate' . 压缩级别不是压缩方法,将其设置为0仍然使用deflate . 您应该尝试另一个库,如SecureBlackbox或DotNetZip .

  • 0

    我确实遵循了Nickolay的建议,我使用DotNetZip创建了一个只包含mimetype文件的存档,并使用该文件作为其他epub的起点 .

    这种方法允许我使用ZipArchive及其异步接口,同时尊重ePub的规范 .

相关问题