查看: 3561|回复: 10
打印 上一主题 下一主题

[教程] 电子书转mdx

[复制链接]
  • TA的每日心情
    开心
    2020-4-3 10:17
  • 签到天数: 1 天

    [LV.1]初来乍到

    35

    主题

    136

    回帖

    1238

    积分

    解元

    Rank: 5Rank: 5

    积分
    1238

    灌水大神章

    跳转到指定楼层
    1
    发表于 2011-11-16 11:34:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 bnuliujitao 于 2011-11-16 11:48 编辑

       rayman老大发明的mdx格式,不仅是一种词典格式,用来做手机上的电子书同样很有优势。它有以下几个优点,一是压缩率高,一般只有纯文本文件的一半或更小;二是支持html的标签,可以实现字体样式、图片、链接等效果;三是即使文件很大,打开的速度仍然很快,它并不是把整个文件都加入到内存里,可以节省内存。另外,他自带的收藏功能当作书签用,也很方便。
      我之前将几本电子书转成了mdx格式,下面将我的一些方法分享一下,希望没有制作过mdx的人可以从中学会,把自己喜欢的电子书转成mdx,与大家分享。

      这里说的电子书主指基于html即网页的电子书,一般是chm或exe格式。
      首先第一步是把电子书反编译,就是还原出其中的网页、图片等内容。建议尽量从chm格式的电子书来转,因为这种电子书反编译比较容易,用一个chmFBY就可以了,很快,而且反编译出来的内容很完整(其他反编译chm的软件还有很多,比如老马的unEBook,制作chm的软件往往也自带反编译的功能,如easychm,htm2chm)。exe格式的电子书由各种不同的软件做成,要找专门的反编译工具,老马的minikillbook虽然可以从所有基于网页的电子书转出网页或文本,但速度要慢很多,文件很大的时候还可能不太稳定,可以作为备用。
      转出来的内容一般包括网页(htm、html)、图片(gif、jpg、png、ico等格式)、css样式表、js(javascript)文件等。图片很多时候是都是背景或是效果,可以将它们全部删掉。如果反编译出来的文件有多个子文件夹,可以使用windows的搜索,比如输入*.gif将所有的gif图片搜索出来,然后全选、删除。如果转出来的文件很多,有数千甚至上万个文件的话,可以将下面几行:
    @echo off
    rem 正在搜索...
    rem 删除文件
    for /f "delims=" %%i in ('dir /b /a-d /s "*.gif"') do del %%i
    rem 删除完毕
    pause
    复制到一个新建的文本文件,另存为.bat(批处理文件)格式,然后把这个bat文件放到要处理的文件夹中双击运行即可,它可以删除该文件夹及子文件夹中所有的gif文件。jpg、png、ico、css、js文件可以用同样的方法删除。如果是网页制作高手的话,可以把css留着,做些改编运用,mdict是支持css的。我不是高手,所以没这方面的经验。
      如果图片是书中的内容,而你想留着的话,可以把这些图片保存到一个文件夹里。后来编辑mdx源文件的时候,要注意图片路径与实际位置的一致。如果图片分散在很多的子文件夹,而且又有重名的话,处理起来会很麻烦。

      接下来是处理网页文件,如果网页都在同一个文件夹,我一般是将目录(一般是index.htm或000.htm)单独编辑,留下其中的链接,其他的全部用老马TextForever中的html>txt转为文本文件。这样做网页中的链接、表格、图片都会丢失,如果想保留这些东西的话,可以在用TextForever之前,用Ultrareplace5.02(支持正则、多项同时、批量替换)将其中的<a href="…">、</a>、<img src="…">、<table …>、<tr>、<td>、</td>、</table>全都转成诸如####a href="…"&&&&的样子,用TextForever将网页转成文本之后,再把其中的####替换成<、&&&&替换成>。
      网页全部转成文本之后,接着用TextForevr的文件合并功能,将转出的文本文件合并成一个文件,注意要选中“在文件内容前加注文件名”这个选项。
      接下来是编辑mdx源文本。源文件的格式很简单,就是形如:
    条目1
    内容……
    ……
    ……
    </>
    条目2
    内容……
    ……
    ……
    </>
      其中的条目就是显示在索引里的名字,不会显示在正文中。内容里支持支持html标签(具体支持到什么程度我不清楚,我都是用最简单的),比如
    “<br>”是换行;
    “<a href="entry://链接到的条目">显示的内容</a> ”是链接;
    “<h1>…</h1>”之类是标题,一共有六级标题,<h1>最大;
    “<font color=blue size=5>…</font>”是字体样式;
    “<p align=center>…</p>”是定义段落的显示位置。
    有一点要说明的是连续的半角空格在显示时只会显示一个,文本中的换行在显示时也是一个半角空格,所以要注意加<br>。
      不要用记事本或word,因为文件稍大点它们就会罢工,更重要的是它们不支持正则表达式。你可以用UltraEdit、Notepad++、Editplus、EmEditor(我常用这个),还有一个专注于查找替换的文本工具EditPad Pro,与PowerGrep(windows下最强大的文本查找处理工具)是同一家公司出品。关于正则表达式,你可看一篇名为《正则表达式30分钟入门教程》的文章,说是入门,其实所有的功能基本都在里面了,入门指的是熟悉规则,提高则需要熟用生巧。需要注意的是,各个文本编辑工具中的正则表达式版本并不相同(UltraEdit自身就提供了三种版本),使用的时候要留心,在这些工具中,如果你在查找替换对话框里选中了“正则表达式”这个选项的话,查找框的后面有一个向下的小箭头,点一下,就会列出正则表达式的元字符。EmEditor中的正则表达式与30分钟教程里介绍的基本是一致的。以上提到的这些文本编辑工具,都支持较大的文件,200M应该都是没有问题的,如果很大的话,可以使用终极工具PowerGrep,它不光可以替换,还可以收集数据、分割文件,据说支持上G的文件,虽然我没试过,但我信。它的价值还体现的它的价格上,要200多美元,注意是美元!不过网上有破解的,你可以搜“PowerGREP.v4.2.0.retail-iOTA”,下载后解压,直接运行里面的安装程序就行,它本身就是破解的,你不用再输序列号,或是运行keygen之类的东西。它是全英文的,目前还没有汉化版,我是用灵格斯摸索着用的。
      合并后的文件中会有很多空行,在EmEditor中你可以用“^\s*(<br>)?\n”替换为“”(替换框里什么都不填)将空行去掉,你可用“\n”替换为“<br>\n”在所有的段落结尾加<br>,这两个步骤不分先后。然后,你可用“\n\s*”替换为“\n  ”把所有段落替换为首行缩进两个中文字符(这两个中文空格一般输不出来,你可以找个地方复制过来)。然后你可以把合并文件时插入的文件名,比如“  D:\chm\001.txt<br>”(经过前两步多了段前空格和<br>)之类用“  D:\\chm\\(.+?)\.txt<br>”替换为“</>\n史记\1”,替换出来的结果是:
    </>
    史记001
      以上提到的那些编辑工具都支持录制宏,就是把步骤录下来,以后直接使用。可以把上面几个步骤录下来,编辑另外一本书的时候直接调用。(步骤必须是一模一样的才行,比如上面的替换名字,必须名字一样,这个宏才有用。)

      替换后将第一个</>删掉,然后在最后一行加一个</>,</>要在独立的一行,前后不能有其他东西。把单独编辑好的目录复制到这个文本里(你可以找一个有目录的mdx,在电脑上用mdict查看,右键查看源代码就能看到它的源文件),一般粘贴在最前面,它的最后也要有一个</>。这样一个mdx源文本就编辑好了,保存之后,用mdxbuilder编译就行了。这个过程很快,1M、2M的源文本就是一贬眼的事,200M的源文本也只要1-2分钟。注意要在mdxbuilder中选择对应的编码类型,否则编译出来的会是乱码,源文本的编码类型在文本编辑器最下面的状态栏里可以看到,一般是GB2312或UTF-8无签名,在mdxbuilder中分别选GBK或UTF-8。

      如果反编译出来的网页在很多个子文夹中,并且都是001.htm,002.htm……这样的样子,可以用批量重命名的工具,在这些文件名前面加上其文件夹的名字。推荐使用灵者更名(RenGod)5.03,这个工具漂亮、直观、功能强大,比论坛里介绍的菲菲更名要好用。(这是一个年纪不大的男孩写的软件,到5.03的时候,源代码丢了,他正在重写。)
    批量命名之后,因为Textforever的合并不支持子文件夹,可以把
    md htm
    for /r %%i in (*.htm*) do move "%%i" "htm\%%~nxi"
    另存为bat批处理文件,放在文件夹下运行,可以把文件夹及其子文件夹中所有的htm文件,转移到一个名为htm的文件夹中。然后用TextForever转化成文本,合并,再用文本编辑器编辑。

    对于己有的mdx文件,如果想要修改的,可以用GetDict转出源文本,编辑之后,用mdxbuilder重新编译。

    CHMFBY.rar

    182.62 KB, 下载次数: 132, 下载积分: 米 -5 粒

    GetDict2.3.rar

    219.98 KB, 下载次数: 136, 下载积分: 米 -5 粒

    RenGod 5.03.part01.rar

    450 KB, 下载次数: 114, 下载积分: 米 -5 粒

    RenGod 5.03.part02.rar

    450 KB, 下载次数: 106, 下载积分: 米 -5 粒

    RenGod 5.03.part03.rar

    450 KB, 下载次数: 103, 下载积分: 米 -5 粒

    RenGod 5.03.part04.rar

    98.07 KB, 下载次数: 85, 下载积分: 米 -5 粒

    TextForever_chn.rar

    227.57 KB, 下载次数: 112, 下载积分: 米 -5 粒

    ultrareplace5.02.part1.rar

    500 KB, 下载次数: 103, 下载积分: 米 -5 粒

    ultrareplace5.02.part2.rar

    500 KB, 下载次数: 122, 下载积分: 米 -5 粒

    ultrareplace5.02.part3.rar

    500 KB, 下载次数: 106, 下载积分: 米 -5 粒

    ultrareplace5.02.part4.rar

    355.66 KB, 下载次数: 108, 下载积分: 米 -5 粒

    颜色代码表.rar

    7.71 KB, 下载次数: 76, 下载积分: 米 -5 粒

    正则表达式30分钟入门教程.rar

    43.71 KB, 下载次数: 108, 下载积分: 米 -5 粒

  • TA的每日心情
    难过
    2021-11-17 15:54
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    8

    主题

    285

    回帖

    2059

    积分

    解元

    Rank: 5Rank: 5

    积分
    2059

    QQ 章

    2
    发表于 2011-11-16 21:15:37 | 只看该作者
    相当祥细精彩,标记一下          收藏了楼主的几部作品一并感谢

    该用户从未签到

    0

    主题

    254

    回帖

    2273

    积分

    解元

    Rank: 5Rank: 5

    积分
    2273
    QQ
    3
    发表于 2011-11-16 23:01:53 | 只看该作者
    老大很负责,很好。
  • TA的每日心情
    开心
    2020-3-8 09:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    104

    主题

    1687

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    16432

    小蜜蜂章笑傲江湖章灌水大神章

    4
    发表于 2011-11-17 09:03:18 | 只看该作者
    我想把freegut 10in1中的某个别词典提取出来,用getdict后得到一个有两个G的文件,只能用ultraedit打开,想把其中的词典数据考出来,考了一部分后就报错,不给考了。想问问有什么办法了。
  • TA的每日心情
    开心
    2020-4-3 10:17
  • 签到天数: 1 天

    [LV.1]初来乍到

    35

    主题

    136

    回帖

    1238

    积分

    解元

    Rank: 5Rank: 5

    积分
    1238

    灌水大神章

    5
     楼主| 发表于 2011-11-17 12:29:16 | 只看该作者
    本帖最后由 bnuliujitao 于 2011-11-17 12:32 编辑

    4# louislaolu

    你可以试一下textforever的文件切分功能,先把它切成几个,然后再处理。如果不能复制的话,你可以备份原文件,试试把不需要的地方删掉。

    或者试试emeditor,它有一个大文件控制功能,可以只打开文件的一部分。

    该用户从未签到

    0

    主题

    52

    回帖

    217

    积分

    童生

    Rank: 2

    积分
    217
    6
    发表于 2011-11-17 20:41:47 | 只看该作者
    提一个小小的问题,读书软件一般触摸屏换页,至少翻页很方便,如果使用字典功能看书的话,看书功能好像稍微弱了一些。

    该用户从未签到

    0

    主题

    111

    回帖

    237

    积分

    童生

    Rank: 2

    积分
    237
    7
    发表于 2012-3-17 11:02:12 | 只看该作者
    老大很负责,很好!非常感谢!

    该用户从未签到

    0

    主题

    72

    回帖

    22

    积分

    童生

    Rank: 2

    积分
    22
    8
    发表于 2012-5-15 14:54:34 | 只看该作者
    谢谢分享,学习一下。

    该用户从未签到

    0

    主题

    4

    回帖

    3

    积分

    童生

    Rank: 2

    积分
    3
    9
    发表于 2012-5-27 12:09:11 | 只看该作者
    已下载,谢谢分享!

    该用户从未签到

    0

    主题

    2

    回帖

    2

    积分

    童生

    Rank: 2

    积分
    2
    10
    发表于 2012-7-3 13:09:09 | 只看该作者
    已下载,谢谢分享!

    该用户从未签到

    0

    主题

    76

    回帖

    318

    积分

    秀才

    Rank: 3Rank: 3

    积分
    318
    11
    发表于 2012-8-13 01:47:52 | 只看该作者
    学习了,多谢分享!