掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 5085|回复: 10

[教程] 电子书转mdx

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

    [LV.1]初来乍到

    发表于 2011-11-16 11:34:08 | 显示全部楼层 |阅读模式
    本帖最后由 bnuliujitao 于 2011-11-16 11:48 编辑 / \0 Z8 I9 g- t. ~# X. x" b8 c

    7 ?! F' P. B/ T+ r' g: |" S2 {   rayman老大发明的mdx格式,不仅是一种词典格式,用来做手机上的电子书同样很有优势。它有以下几个优点,一是压缩率高,一般只有纯文本文件的一半或更小;二是支持html的标签,可以实现字体样式、图片、链接等效果;三是即使文件很大,打开的速度仍然很快,它并不是把整个文件都加入到内存里,可以节省内存。另外,他自带的收藏功能当作书签用,也很方便。
    & [; y( K8 k. \8 m! ~( |% A. e( B2 M' ^  我之前将几本电子书转成了mdx格式,下面将我的一些方法分享一下,希望没有制作过mdx的人可以从中学会,把自己喜欢的电子书转成mdx,与大家分享。" V' x. k0 e! }$ g6 o4 z5 U

    : x1 K: Z+ u; s& X0 p, {  这里说的电子书主指基于html即网页的电子书,一般是chm或exe格式。
    . o' c5 Q, b7 c3 j. P) _  首先第一步是把电子书反编译,就是还原出其中的网页、图片等内容。建议尽量从chm格式的电子书来转,因为这种电子书反编译比较容易,用一个chmFBY就可以了,很快,而且反编译出来的内容很完整(其他反编译chm的软件还有很多,比如老马的unEBook,制作chm的软件往往也自带反编译的功能,如easychm,htm2chm)。exe格式的电子书由各种不同的软件做成,要找专门的反编译工具,老马的minikillbook虽然可以从所有基于网页的电子书转出网页或文本,但速度要慢很多,文件很大的时候还可能不太稳定,可以作为备用。' t% e7 @9 w# W: B0 {# }- I2 q: r/ ]
      转出来的内容一般包括网页(htm、html)、图片(gif、jpg、png、ico等格式)、css样式表、js(javascript)文件等。图片很多时候是都是背景或是效果,可以将它们全部删掉。如果反编译出来的文件有多个子文件夹,可以使用windows的搜索,比如输入*.gif将所有的gif图片搜索出来,然后全选、删除。如果转出来的文件很多,有数千甚至上万个文件的话,可以将下面几行:3 O+ k' s7 a# ^. o' L7 U: v
    @echo off
    7 V& E& e+ e' x) ^1 M! ~# }" L0 vrem 正在搜索...) E  o3 J: e8 t" p, H
    rem 删除文件
    9 M/ ^; O$ a4 b8 U3 \' f6 ffor /f "delims=" %%i in ('dir /b /a-d /s "*.gif"') do del %%i+ x0 Z7 [7 a+ u6 ^1 ?! p7 ~; U
    rem 删除完毕# Q1 M4 z; A6 G. t2 L
    pause
      y7 t5 `$ a7 S! ]7 w. B复制到一个新建的文本文件,另存为.bat(批处理文件)格式,然后把这个bat文件放到要处理的文件夹中双击运行即可,它可以删除该文件夹及子文件夹中所有的gif文件。jpg、png、ico、css、js文件可以用同样的方法删除。如果是网页制作高手的话,可以把css留着,做些改编运用,mdict是支持css的。我不是高手,所以没这方面的经验。
    5 M' d) n' Q3 B+ ?1 h5 P
      如果图片是书中的内容,而你想留着的话,可以把这些图片保存到一个文件夹里。后来编辑mdx源文件的时候,要注意图片路径与实际位置的一致。如果图片分散在很多的子文件夹,而且又有重名的话,处理起来会很麻烦。- w& S! |, w' K! G! \
    - F$ h) H0 E3 Q1 Y. F. S* }1 A3 }
      接下来是处理网页文件,如果网页都在同一个文件夹,我一般是将目录(一般是index.htm或000.htm)单独编辑,留下其中的链接,其他的全部用老马TextForever中的html>txt转为文本文件。这样做网页中的链接、表格、图片都会丢失,如果想保留这些东西的话,可以在用TextForever之前,用Ultrareplace5.02(支持正则、多项同时、批量替换)将其中的<a href="…">、</a>、<img src="…">、<table …>、<tr>、<td>、</td>、</table>全都转成诸如####a href="…"&&&&的样子,用TextForever将网页转成文本之后,再把其中的####替换成<、&&&&替换成>。
    8 @& [$ b$ s1 |% w% f
      网页全部转成文本之后,接着用TextForevr的文件合并功能,将转出的文本文件合并成一个文件,注意要选中“在文件内容前加注文件名”这个选项。* r+ T# Z7 G3 m8 A4 ?
      接下来是编辑mdx源文本。源文件的格式很简单,就是形如:
      e- w" u3 g$ a8 S1 H/ ?7 `条目1
    + J2 l$ o' f( a' F+ `内容……
    0 P0 _( ~# t+ C……4 _5 B& D" G- T$ {3 @
    ……
    9 d! F* ^) \% H' j4 }! y  m</>1 r1 u/ p- D, O6 i) w6 j
    条目26 _" D0 s1 h% Z6 \' [
    内容……2 X# Y- g: B! Y( F
    ……! S$ R  x0 s8 r0 u* ~0 n. W
    ……2 C, A1 ^* s, F# ]. ]1 O3 [
    </>
    1 ]8 C& g2 h" f5 e* y  其中的条目就是显示在索引里的名字,不会显示在正文中。内容里支持支持html标签(具体支持到什么程度我不清楚,我都是用最简单的),比如
    ) {8 Y- w  V/ ]( m" c4 t“<br>”是换行;% [2 y( m) B' E
    “<a href="entry://链接到的条目">显示的内容</a> ”是链接;
    ) R; H# T# u; ~3 @8 v5 O1 ]6 }“<h1>…</h1>”之类是标题,一共有六级标题,<h1>最大;3 p2 D: x0 Q% @# {2 r8 t! Q
    “<font color=blue size=5>…</font>”是字体样式;
    " o% ]4 d. S% H1 h6 O* ]# j“<p align=center>…</p>”是定义段落的显示位置。# o' Q! g3 O1 j& {
    有一点要说明的是连续的半角空格在显示时只会显示一个,文本中的换行在显示时也是一个半角空格,所以要注意加<br>。
    ' n8 `) c/ u' {, X0 g8 k# P; w  不要用记事本或word,因为文件稍大点它们就会罢工,更重要的是它们不支持正则表达式。你可以用UltraEdit、Notepad++、Editplus、EmEditor(我常用这个),还有一个专注于查找替换的文本工具EditPad Pro,与PowerGrep(windows下最强大的文本查找处理工具)是同一家公司出品。关于正则表达式,你可看一篇名为《正则表达式30分钟入门教程》的文章,说是入门,其实所有的功能基本都在里面了,入门指的是熟悉规则,提高则需要熟用生巧。需要注意的是,各个文本编辑工具中的正则表达式版本并不相同(UltraEdit自身就提供了三种版本),使用的时候要留心,在这些工具中,如果你在查找替换对话框里选中了“正则表达式”这个选项的话,查找框的后面有一个向下的小箭头,点一下,就会列出正则表达式的元字符。EmEditor中的正则表达式与30分钟教程里介绍的基本是一致的。以上提到的这些文本编辑工具,都支持较大的文件,200M应该都是没有问题的,如果很大的话,可以使用终极工具PowerGrep,它不光可以替换,还可以收集数据、分割文件,据说支持上G的文件,虽然我没试过,但我信。它的价值还体现的它的价格上,要200多美元,注意是美元!不过网上有破解的,你可以搜“PowerGREP.v4.2.0.retail-iOTA”,下载后解压,直接运行里面的安装程序就行,它本身就是破解的,你不用再输序列号,或是运行keygen之类的东西。它是全英文的,目前还没有汉化版,我是用灵格斯摸索着用的。9 N/ `& k1 z6 I2 o1 }9 h
      合并后的文件中会有很多空行,在EmEditor中你可以用“^\s*(<br>)?\n”替换为“”(替换框里什么都不填)将空行去掉,你可用“\n”替换为“<br>\n”在所有的段落结尾加<br>,这两个步骤不分先后。然后,你可用“\n\s*”替换为“\n  ”把所有段落替换为首行缩进两个中文字符(这两个中文空格一般输不出来,你可以找个地方复制过来)。然后你可以把合并文件时插入的文件名,比如“  D:\chm\001.txt<br>”(经过前两步多了段前空格和<br>)之类用“  D:\\chm\\(.+?)\.txt<br>”替换为“</>\n史记\1”,替换出来的结果是:' K1 _. p9 T3 J+ e1 y
    </>! D' q$ c. W& e1 C& u
    史记001, ], L; V  ]# [
      以上提到的那些编辑工具都支持录制宏,就是把步骤录下来,以后直接使用。可以把上面几个步骤录下来,编辑另外一本书的时候直接调用。(步骤必须是一模一样的才行,比如上面的替换名字,必须名字一样,这个宏才有用。)8 ^/ }$ I0 _7 ~. G

    2 E( ^" }! V" w* X  替换后将第一个</>删掉,然后在最后一行加一个</>,</>要在独立的一行,前后不能有其他东西。把单独编辑好的目录复制到这个文本里(你可以找一个有目录的mdx,在电脑上用mdict查看,右键查看源代码就能看到它的源文件),一般粘贴在最前面,它的最后也要有一个</>。这样一个mdx源文本就编辑好了,保存之后,用mdxbuilder编译就行了。这个过程很快,1M、2M的源文本就是一贬眼的事,200M的源文本也只要1-2分钟。注意要在mdxbuilder中选择对应的编码类型,否则编译出来的会是乱码,源文本的编码类型在文本编辑器最下面的状态栏里可以看到,一般是GB2312或UTF-8无签名,在mdxbuilder中分别选GBK或UTF-8。2 A0 [# @, ?$ w, S5 I
    7 p- a+ [0 P+ u
      如果反编译出来的网页在很多个子文夹中,并且都是001.htm,002.htm……这样的样子,可以用批量重命名的工具,在这些文件名前面加上其文件夹的名字。推荐使用灵者更名(RenGod)5.03,这个工具漂亮、直观、功能强大,比论坛里介绍的菲菲更名要好用。(这是一个年纪不大的男孩写的软件,到5.03的时候,源代码丢了,他正在重写。)
    ! Z5 {1 G2 _0 i8 E. s
    批量命名之后,因为Textforever的合并不支持子文件夹,可以把: |6 O+ s0 H9 m- m! i" s
    md htm
    & k3 Z# K1 D( [for /r %%i in (*.htm*) do move "%%i" "htm\%%~nxi"0 T+ c# @+ s- m2 o" Q/ C8 A3 v3 t
    另存为bat批处理文件,放在文件夹下运行,可以把文件夹及其子文件夹中所有的htm文件,转移到一个名为htm的文件夹中。然后用TextForever转化成文本,合并,再用文本编辑器编辑。- F, y" S4 i" K/ S. @

    $ g8 }9 P! o& r5 K" g对于己有的mdx文件,如果想要修改的,可以用GetDict转出源文本,编辑之后,用mdxbuilder重新编译。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?免费注册

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

    [LV.4]偶尔看看III

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

    该用户从未签到

    发表于 2011-11-16 23:01:53 | 显示全部楼层
    老大很负责,很好。
  • TA的每日心情
    开心
    2020-3-8 09:14
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    [LV.1]初来乍到

     楼主| 发表于 2011-11-17 12:29:16 | 显示全部楼层
    本帖最后由 bnuliujitao 于 2011-11-17 12:32 编辑   Y+ y* h* }8 D8 {* x* N$ S1 x
    5 g# j# f! A* V
    4# louislaolu $ N- ~  f9 a8 o2 T
    # N1 M# s3 Z) a; s( u
    你可以试一下textforever的文件切分功能,先把它切成几个,然后再处理。如果不能复制的话,你可以备份原文件,试试把不需要的地方删掉。
    , I1 o2 C) ?0 p8 T4 y5 T$ [# e
    . T0 N" U: X8 h4 k或者试试emeditor,它有一个大文件控制功能,可以只打开文件的一部分。

    该用户从未签到

    发表于 2011-11-17 20:41:47 | 显示全部楼层
    提一个小小的问题,读书软件一般触摸屏换页,至少翻页很方便,如果使用字典功能看书的话,看书功能好像稍微弱了一些。

    该用户从未签到

    发表于 2012-3-17 11:02:12 | 显示全部楼层
    老大很负责,很好!非常感谢!

    该用户从未签到

    发表于 2012-5-15 14:54:34 | 显示全部楼层
    谢谢分享,学习一下。

    该用户从未签到

    发表于 2012-5-27 12:09:11 | 显示全部楼层
    已下载,谢谢分享!

    该用户从未签到

    发表于 2012-7-3 13:09:09 | 显示全部楼层
    已下载,谢谢分享!

    该用户从未签到

    发表于 2012-8-13 01:47:52 | 显示全部楼层
    学习了,多谢分享!
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2025-5-8 06:51 , Processed in 0.024772 second(s), 27 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表