为啥 mhtml 不受待见?mhtml 是 pdf 的下位替代吗?

mhtml 简单来说就是将 html 中的 css、js、image 等外部文件封装起来,组成一个打包好的单文件,实现离线查阅。

我觉得 mhtml 挺好的呀,单文件,保持样式,支持离线查看,而且能快速切换为 html 格式。特别适合笔记、教程等说明性质的文章。

但是似乎所有软件不待见它。比如 Typora,宁可干掉图片,导出纯文本的 html,都不支持 mhtml。

它跟pdf就差在A4打印上。

3 个赞

和docx、html这些电子文档相比,pdf更接近一张纸。
为了保证看上去、打出来一样这个特征,pdf牺牲了一切,包括编辑、重排版甚至检索。

可以考虑textbundle

其实现在的 HTML 也已经支持将所有东西打包成一个单一文件了,比如 SingleFile 保存的网页,就可以将图片全部以 base64 形式保存在 html 文件中,并带上 css。

另外,AriaNg 有一个 “All in one” 版本,就是将 js、css、图片资源等放在一个 html 文件中。

至于 mhtml,在百度百科上看到这样一句描述:

由于保存为MHTML的方式未经标准化,因此各浏览器读取的效果略有不同。

不知道是不是这个原因制约了 mhtml 的应用。

另外,有人说除了 IE 外,其他浏览器对 mhtml 的支持都存在一些问题,可能这也是制约这种格式广泛应用的原因。

Typora 支持内嵌图片的吧,虽然我很久没用了

我也喜欢 mhtml,原封不动保存网页!交互都还在。

现在还有一种单文件 HTML 的存储技术,效果不亚于 MHTML。

2 个赞

一方面是各大浏览器对 mhtml 的支持程度不一,另一方面则是保存 mhtml 文件的过程中可能会因为各种各样的问题出现无法保存的情况,而 PDF 格式则没有上述两个问题。

PDF 是脱胎于 PostScript 语言的文档格式,PS 是当初 Adobe 公司成立以后推出的面向打印机的页面描述语言,通过苹果 LaserWriter 打印机一炮走红,成为桌面出版行业的金标准。
HTML 转 PDF 就意味着必须牺牲流动性的页面布局,按照特定宽度把内容塞进 PDF,并且根据页面高度来拆分网页上的东西。

我完全不能理解也不能接受的一点,是各种pdf的格式天差地别。
很多用硬换行,导致一个词换在两行的话就搜不到。
甚至有的每个字符都在不同的文本框里面,任何词都搜不到。
有的明明是文本,也没有加密,就是复制不了,也提取不出来。
总之就是有无穷多的问题。

就是base64编码图片吗?
我尝试用旧版Opera保存的mhtml网页,IE打开是乱码的。

为啥 mhtml 不受待见?mhtml 是 pdf 的下位替代吗? - #8,来自 Dalieba 提到的两款扩展前,我挺喜欢MHT格式。
但是它有两个问题:

  1. 兼容软件少
  2. 纯文本乱码

mhtml本质上对网页内容的重新编码. 尤其是 图片要转成 base64.

这就导致了mhtml 在保存时和阅读时, 会有一定偏差.

各种浏览器的支持度也不尽相同.

其实更好的保存结构是, 另存为带文件夹的html, 然后在压缩成zip格式. 至于后缀名改成什么无所谓.

现在很多开放性格式文件, 基本都是这个路数. 包括但不限于 apk, docx 等等.

所以 SingleFileZ 也是这个思路. (SingleFile 的作者的另一个产品)

确实,这一点一直理解不能:Word里面排版好好的,打印出来就分段了,复制一遍还没法直接用。

这些情况原因有些复杂,有的是创建用的软件问题,有的软件给 PDF 设置了权限,还有的把页面搞成一图流了

对,就是用 base64 编码嵌入的。不过就算 MHTML 也用这个格式保存图片,而且这种文档可以把后缀名改为 eml 再用 email 客户端打开。

至于乱码的问题,我觉得需要用文本编辑器打开看看里面的 charset 属性标注的什么编码。