zoukankan      html  css  js  c++  java
  • PDF转EPUB格式电子书经验总结

    依据本人将PDF转换为EPUB电子书的经验,总结整理了这篇文章。因本人水平有限,难免有错误和不足之处,望大家及时批评指正。
     
    写这篇文章时,假定读者已经会使用文中所列出软件的基本操作,比方如何用Notepad++打开HTML文件,如何使用PDF Password
    Remover(这个软件非常easy,稍有电脑操作基础的人打开后就知道怎么做)。另外读者须要对ePubBuilder的操作比較了解。
     
    本文主要讨论图文并茂、非扫描版的PDF文档。对于扫描版PDF文件,假设是漫画一类的,能够直接用Adobe
    Acrobat转化为图片制作EPUB,假设是文字形式的扫描电子书,能够使用OCR软件识别以转化成文字(ABBYY
    FineReader识别效果相对较好)。但OCR识别中文准确率不够高,部分无法识别的汉字须要人工输入。对于纯文本形式的PDF,直接保存为TXT,然后转换就能够。

    假设文字无法复制。能够用PDF
    Password Remover解密,详细请參考本文的PDF解密部分。

     
    下面摘自百度百科:
    PDF是Portable Document Format(便携文件格式)的缩写,是一种电子文件格式,与操作系统平台无关,由Adobe
    公司开发而成。PDF
    文件是以PostScript语言图象模型为基础,不管在哪种打印机上都可保证精确的颜色和准确的打印效果,即PDF会忠实地再现原稿的每个字符、颜色以及图象。
    PDF主要由三项技术组成:
      · 衍生自PostScript,能够说是PostScript的缩小版;
      · 字型嵌入系统,可使字型随文件一起传输;
      · 资料压缩及传输系统。
    PDF文件结构主要能够分为四个部分:
    1.首部
    2.文件体
    3. 交叉引用表
    4.尾部
     
     
    一方面,PDF格式作为印前出版的工业标准。因为其排版相对复杂,文件内容也有比較复杂,比方PDF能够内嵌特殊字体,能够非常自由的保存每一个图片、文本对象的绝对位置,而还有一方面,EPUB採用类似网页格式的XML标准,即使添加了CSS样式表的支持。排版效果还是远难及PDF,因此想把排版优良的PDF电子书完美地转换成EPUB格式。相对照较复杂。一些正版收费阅读器会推出一些排版质量非常高的EPUB,我试用过,排版确实不错。可是那仅仅有在非常精心的制作下才干得出,对于我们转换PDF的人来说,是非常不现实的,并且那些电子书一般收费是比較高的。应该还有授权限制,不可能共享出来让大家都能用(这些文件仅仅有在特定应用中登录特定账号后才干打开,复制给别人就打不开了)。

     
     
    可能要用到的全部软件:
    PDF Password Remover 3.0
    Adobe Acrobat
    Chrome浏览器(其它浏览器应该也行)
    Notepad++
    Microsoft Word
    WPS
    数码照片压缩大师
    ePubBuilder
     
    大致思路是首先解除password限制。然后导出为HTML格式,去除无关信息、修正乱码等。然后用ePubBuilder导入,完好书籍信息。分章节。自己用阅读器打开检查有无严重错误,然后公布。

    为什么要转为HTML,由于这样的格式全然开源。优点理。出错率低,也和EPUB内部保存格式一致。

     
    详细过程例如以下:
    首先指明一点,下面的步骤最后要达到的排版上的目标是:全部图片都能正常显示。但都默认靠左(有些阅读器能够设定图片强制居中显示)。文字段落和图片分开。文字不会围绕图片,也就是不会左边一半是图,右边一半是文字。尽管那样效果更好,但难度太大。不易实现。

     
     
     
     
     
    1、假设加密了,使用PDF Password Remover移除PDF文件加密限制。加密问题后面还会详细讨论。

     
     
     
    2、用Acrobat打开,菜单中
    文件,另存为(或导出)。选择生成HTML3.2格式(无CSS)。生成的时候可能比較慢。一定要耐心等,不要乱点鼠标。easy死机。依据经验,这里不选择HTML4.0(CSS1.0),虽然后者有CSS的支持,排版按理说会更好。但其实导入ePubBuilder中出错率大增,效果也并不好。
     
     
    3、在浏览器中查看,有没有明显的错误。比方根本打不开,全是乱码。没有中文,没有图片等。全是乱码可能是HTML编码的问题,没有中文可能是PDF字体、编码的问题,没有图片也许是HTML链接的问题,解决起来非常麻烦,也不一定对。

    假设真遇到这种严重问题,我也无能为力了。只是幸运地是,仅仅要PDF比較正常。不会出现这种问题。

     
    这里简要说明一下,HTML一般由源文件和数据目录组成,如“摄影.html”和相应目录“摄影_files”,目录也有可能是其它名称。如images,源代码和数据目录通常要放在同一父目录下,目录中主要为图片等多媒体文件。可能还有CSS样式表、Javascript脚本一类的东西。在PDF导出的HTML3.2中,基本上仅仅会是图片。而html源文件事实上是文本文件,用记事本就能够打开,后面我们会用Notepad++直接操作HTML源文件。
     
     
    4、从这一步開始,我们须要修正HTML的各种问题。会涉及一些可能不好懂得知识。对于了解HTML和正則表達式的人,应该能非常快明确。不懂的话照着做就能够了。

    假设你在上一步打开HTML时感觉排版已经非常好了,并且没有多余的东西。能够直接跳过HTML修正的这些步骤。直接导入到ePubBuilder看效果假设。

     
    5、用Notepad++打开HTML文件,我们能够看到其源代码如图。
     
     
    6、替换删去html源代码中align代码以去除图片文字指定的对齐。使其默认左对齐。详细方法是,按Ctrl+H,或菜单中  搜索 -
    替换。“查找模式”为“普通”,“查找目标”为align="center",,“替换为”这个框不填,勾选“循环查找”,然后点击“所有替换”。

    假设一次处理多个文件,则所有打开,点击“替换所有打开文件”就可以。

    相同。“查找目标”分别改为align="left",align="right",align="justify",所有替换。再次打开HTML时。你会发现原先位置有些混乱的图片看上去好多了。假设有些图片确实是居中更合适,能够不所有替换。或者在后文还会利用Word来改动。

     
    这个版式就有点乱,原因就在于有些图片靠右对齐。有些靠左,还有的文字设定了两端对齐。

     
     
     
     
    7、替换删去页眉等干扰图文(使用正則表達式)
    一般的图书都会有页眉和页脚,比如图中红色框出的部分。还有像页码一类的标注。这些信息在生成EPUB后全然没有意义,由于EPUB在不同情况下页码分布并不一样。了解Word的人知道,在图书编辑时。页眉是能够批量编辑改动的,可是生成PDF之后页眉页脚变成了分别独立的对象,没办法同一时候删除。
     
     
    假设页眉是文字,将在下一步处理,源代码中有可能文本採用的是转义字符,看不懂的情况下也不便改动。假设页眉含有图片。如图中的数字02,须要通过HTML源代码进行替换。方法例如以下。

    用Chrome和Notepad++同一时候打开HTML文件。在Chrome中右击页眉图片,审查元素。底下会有个显示源代码的窗体,看清width和height后面相应的表示图片宽高的数字,切换到Notepad++,还是使用替换功能。首先把“查找模式”改为“正則表達式”,取消勾选“匹配大写和小写”,勾选“.
    matches newline”。其它选项不变,查找目标为

    <[^<>]*IMG[^<>]*width="39"[^<>]*height="71"[^<>]*>
    注意中间没有不论什么空格,width和height后面的数字是刚刚在Chrome中看到的数字,然后所有替换,保存文件,但不要关闭Notepad++。

    这时,宽度和高度符合要求的图片就没有了。然后在Chrome中刷新,看改动后有没有问题,假设有问题。在Notepad++中撤销更改,然后得针对实际情况详细分析(此处略去)。

    一般在Chrome中还能看到一些页眉没有被替换掉,原因是他们的宽高可能与之前的有所差距,这时仅仅需反复前面动作即可了。

     
     
     
    採用转义字符(形如& # 20154 ;)表示的汉字,非常难看明确:
     
     
     
     
     
    8、用word进一步编辑
    这一步完毕后HTML就会接近完美了。所以也非常关键。

    用Word打开HTML(不推荐其它软件,由于包括整本书的HTML文件一般非常大,非常多软件打开非常easy死机。如WPS、DreamWeaver。而Word2010在这方面优化的不错,2003版的不清楚),打开后能够全选改动字体等。然后替换,去除少量无法显示的字符乱码。即显示为问号(相同注意尽量不要把原文问号替换没了),替换掉反复出现的站点信息、广告等。还有就是文字形式的页眉页脚(再次强调,注意尽量不要把原文中和页眉相同内容替换没了,Word中能够依据指定字体来替换,这样比較方便),对于不是非常规则的页码如:第x页,这种信息去除,则交给ePubBuilder来完毕。然后用Word把图文中排版不当的进行适度改动,不须要的文件夹则去除,没有严重问题就可以。

    注意这里有个问题,假设PDF比較完整,有文件夹,要把文件夹中相应页码删除。就像这样:前言………………………………………………………………1,这个第一页在转换为HTML时就已失去意义了,没有必要保留。

    另外此处注意一种常见的问题。就是个别文字是图片形式保存的。将在后文常见问题中具体说明。
     
     
    Word强大的替换功能,能够指定替换前后的文字格式。
     
     
     
    9、假设有必要的话。优化HTML文件。以便正确导入ePubBuilder。

    这一步其实能够说应该还是ePubBuilder不够完好造成的吧。用Word编辑保存后的HTML文件头部会增加非常多特殊信息,如图中<meta....>,还有绿色的<!--..........-->部分(在标准的HTML中这样的形式的文本为凝视。删除后没有影响)等,另外还有图片的链接问题。这些问题有时会影响ePubBuilder导入,出现一些错误。

    假设出现了错误。请尝试使用浏览器打开另存,用Notepad++删除绿色的<!--..........-->部分。

    假设还是不行,使用用WPS新建文档(Word不行,WPS生成时会又一次链接图片,Word则不会),用浏览器打开HTML。全选并复制网页内容。粘贴到WPS。保存为HTML。

    此时HTML文件会全然又一次生成,但图片可能会被WPS转为png,占用空间通常会增大,不推荐。

     
     
    10、假设用了WPS又一次保存,请查看HTML文件的图片目录大小。假设过大,有必要压缩一下
    压缩方法例如以下:
    用数码照片压缩大师加入目录,输出jpg保存到还有一目录。然后用Notepad++打开HTML源代码。能够找到类似

    <IMG 。。。 width="711" height="911" src="images/img_0.png"
    。。

    。>

    这种图片标签,然后用普通模式替换“.png”为“.jpg”。

    然后把图片目录的png图片删除,将压缩后的jpg移进去。

    最后用浏览器打开后确认一下。

     
     
     
    11、用ePubBuilder导入,编辑书籍信息,分章节,智能排版等
    看有没有错误,有错的话改动一下。前面可能还遗留了一个问题,页脚形如“第x页”的去除。能够使用删除特征行的功能实现。

    这里我还是提出ePubBuilder的一个缺陷。你可能会发现,原先的HTML排版非常好。还有字体信息等。但导入后都没有了,有些图片也会有些小问题,比方我的HTML如图。但导入后,字体格式没有了。文字、图片居中没有了并且原先在“摄影大师之道”左边的那个红框位置就全然乱了。这个我眼下还没有好的对策,期待着ePubBuilder功能继续完好吧。

     
     
    12、导出EPUB,用掌上书苑或者其它查看器再查看一下是否正常。然后公布,等着审核通过拿书币吧^_^。是不是认为这书币拿的格外开心呢?
     
     
     
    easy出现的问题,我分析了下面,大致有这些吧:
    一是PDF的加密版权保护。

    非常多PDF因为涉及版权问题,採用了一定的加密手段,最严格的一种是打开文件时要求输入password,如图所看到的。对于这样的情况,我们仅仅能使用Advanced
    PDF Password Recovery一类软件暴力破解。这里就不具体介绍了,成功率不高。须要大量时间。

     
     
    更常见的加密方式是。文件能够打开,但不能复制当中的文本。或者复制的是乱码。这种情况。我们使用PDF Password
    Remover一般就能非常快移除加密限制。从而复制当中的文本。

     
     
    二是PDF内嵌的字体。非常多PDF内嵌一些字体,会导致复制出来出现乱码现象。假设整个文档导出的文件错字连篇,我也不知有什么好办法,可是假设仅仅有少量错字,还是能够手工改动的,或者某几个字出错。能够採用替换的方式解决,当然自己主动替换所有文字时非常可能把正确的字给替换错了。

    举个样例。假设文中所有“的”字变成了“癿”,我们能够放心的替换回来。由于这个字非常少见。可是假设“的”字所有变成了“白”字,盲目替换会把“明确”替换成“明的”,就出问题了。

    对于这种情况,确实没有好办法解决。这一点尤其要注意。

    另一种情况。个别文字的字体系统中没有(一般是由于其它文字使用的字体不支持这几个字,这几个字就会换成其它字体),然后会被转换成图片,如图。这就须要在Word中耐心一点手动改正了。
     
     
     
    三是排版的问题。

    比方以下这边排版精美的摄影电子书,图文并茂,文字在图片中间。转换成HTML后会如何呢?最后如你所料,有些混乱。这个也不好解决。假设你想制作优质的书,那就在Word中手动改动吧^_^。

    (非常可惜我实在没有这般的耐心。)

    另一种情况。非常奇特。在PDF中,文字也是一个个对象。通常一段字体同样的文字是一个对象。而每张图片是一个对象。

    可是,PDF编辑器有个非常有意思的地方。比方说,两段文字原先是一个对象,你在当中插入一个空行,可能它就被分成两个对象了,反过来,两个同一性质的对象(都是文字或都是文字),靠得比較近时。又会自己主动并成一个对象。

    奇迹就发生了。试想。下图中如果中间的图和以下的图靠得非常近,宽度也一致,然后就奇迹般地组合成一个对象了,然后输出的HTML中,他们成为了“连体婴儿”。成了一张图片,然后。你就不知道该怎么安排旁边那些描写叙述性的文字了(除非手工又把图片切割开)。所以仅仅好希望读者将就着看吧。哎,PDF转EPUB的无奈在此也可见一斑了。

     
     
     
     


    本文首发自我的个人主页。转载请注明来源:http://www.hainter.com/pdf-to-epub

  • 相关阅读:
    LeetCode链表解题模板
    c++中的new、operator new、placement new
    树的前序、中序、后续、层次遍历的递归和非递归解法
    c++Volatile关键词
    南大算法设计与分析课程OJ答案代码(5)--割点与桥和任务调度问题
    c++右值引用以及使用
    c++选择重载函数
    从4行代码看右值引用
    被遗忘的C结构体打包技术
    南大算法设计与分析课程OJ答案代码(4)--变位词、三数之和
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7226954.html
Copyright © 2011-2022 走看看