如何去除用sigil合并数个htm时,各段pdf中间空白页去除的空白

如何去除用sigil合并数个htm时,各段中间的空白?
sigil可以方便地合并html,但是合并后原来的单个html文件变成一个后,之间会有一段空白,如何批量去掉呢
用 Ctrl+F ,正则的方法最近有一个好现象,就是AppStore上的国人独立游戏越来越多,质量越来越高,而且也频繁...
上一次算是苹果大获全胜,这一次不知道苹果还有没有这样的运气?
本作是一款全新形态的音乐游戏,在传统的音乐游戏的基础上还加入了完整的故事剧情。
iPhone 5se 几乎可以肯定将搭载 A9 处理器,而不是 A8 和 M8 的组合,下面强行给予两...
或许不久以后 iPhone 产品线也会有 Pro 版本。
本周二,三星发布业界第一款 256GB UFS 闪存芯片,读/写操作 IOPS 分别可达 45000、40...
海外建设很重要,但也不能忘记本土业务的发展。
作为一名邮件管理类新秀,它不仅能对邮件智能归类提醒、还拥有完整的附件管理功能,并...
《拼布(Patchwork The Game)》是一款玩法有些类似《俄罗斯方块》的休闲益智游戏,只...
本周,游戏开发商Channel 4在苹果商店当中推出了其新作《火焰功夫(Fire Fu)》。在游...
美剧《行尸走肉》是根据同名漫画作品改编制作的,整部美剧基本上还是与漫画的故事走向...
爱是世界上最美的语言!为了它,你愿意去付诸一切行动,哪怕穿越宇宙也在所不惜吗?
魔幻题材的游戏一直深受玩家的喜爱,在游戏中玩家可以进入到另外一个完全不一样的世界...
游戏中玩家可以使用的角色有三个,分别是塔胡、勒瓦和波哈图,他们将深入统治迷宫找回...
《翡翠少女:梦之交响曲》是 Artifex Mundi sp. z o.o. 近期推出的一款新作,Artifex ...
一边充电一边拿着iPhone在泡澡,感觉画面还是很美丽的~
最主要它还非常的灵活,非常的灵活,非常的灵活!!!
为什么会有人希望 iPad Air 3 可以有这样一款来自苹果的官方键盘产品呢?
买东西最怕的就是选择困难症,这种“病”的症状到了要买蓝牙音箱的时候会非常严重。原...
或许你手中的iPhone 6s,可能就是最后一款配备3.5mm接口的iPhone了。
Sonos于今天正式宣布将于明天开始正式支持Apple Music,全球各地的Sonos消费者可直接...
或许不久后,你就能在附近的苹果零售店中看到这款贴膜工具。
一家名为Appostasy的公司就推出了一款名为PenSe的Apple Pencil配件,让你的苹果笔不在...
求教,sigil怎么导入多部epub电子书做成合集?
注册时间 最后登录
在线时间73 小时 UID
主题帖子人气
白苹果, 积分 626, 距离下一级还需 874 积分
想把单行本做成合集,但是只能导入一部书籍,在下小白一枚,请求各位前辈指导,感谢!
<p id="rate_72197" onmouseover="showTip(this)" tip="sigil无此功能吧。。。:)&人气 + 1
" class="mtn mbn">
sigil无此功能吧。。。:)
注册时间 最后登录
在线时间73 小时 UID
主题帖子人气
无此功能吗?epubbuilder可以,但是我不会用~
注册时间 最后登录
在线时间283 小时 UID
主题帖子人气
请参考以下 web page
注册时间 最后登录
在线时间1116 小时 UID
主题帖子人气
本帖最后由 ovioni 于
13:09 编辑
有个比较简单的方法
先制作好单本的,然后用calibre的epubmerge插件来合并。
这种合并可以逆操作,以后如果又喜欢分册了,可以直接用这个插件来拆分。
这个插件的合并方式,相当于把2本书直接装订成一本,本质上仍然是2本书,这个从文件目录里可以很明白的看出来,不同的文件夹对应不同的书。
而如果合并完,要用sigil来编辑的话,需要重新制作目录,因为sigil是把整个文件看成一本书来处理的,后面的分册目录会跳转到第一本上去。
你说的epubbuider也可以的,只是这个软件的样式表是被锁定的,非注册用户只能用这软件默认的css,所以那些自制精排的书会损失排版效果。
<p id="rate_34848" onmouseover="showTip(this)" tip="我很赞同^_^&人气 + 1
" class="mtn mbn">
我很赞同^_^
注册时间 最后登录
在线时间73 小时 UID
主题帖子人气
fhchen2002 发表于
请参考以下 web page
http://web./git/files/OEBPS/Text/splitting_and_mergin ...
灰常感谢,可是我上不去谷歌好久了,如果内容不多,能否麻烦封釉帮我截个图或者粘过来也好,万分感谢!
注册时间 最后登录
在线时间73 小时 UID
主题帖子人气
ovioni 发表于
有个比较简单的方法
先制作好单本的,然后用calibre的epubmerge插件来合并。
这种合并可以逆操作,以后如果 ...
这个方法也很好,sigil有什么办法可以直接做到吗?亚麻的自购,目录编的很好,打乱有点可惜了~
我一直非常奇怪为什么每次导入epubbuilder的电子书都会失去排版效果,也看不见有任何代码编辑页面,原来是设了限制,多谢讲解,有破解方法吗,我下过一个破解版,只是不用再授权而已~
注册时间 最后登录
在线时间42 小时 UID
主题帖子人气
我现在也用sigil制作书籍,因为这个软件占内存小,OS X系统没办法装其他,万能制作书籍那个占内存。
以前我是用掌上书苑那个,合并epub太简单了。
如今用sigil,已经不太做合集了,但如果有新书想要看,我是用最土的笨办法,——将要合并的书籍打开,然后一章章复制粘贴到需要合并的那个窗口,这个办法蛮麻烦,所以一般书籍我看过之后就删除掉了。
sigil里面无法合并几本epub。
注册时间 最后登录
在线时间42 小时 UID
主题帖子人气
楼主电脑是什么系统?
win系统的话直接掌上书苑那个epubbuider,非常好用,我以前那么多合集都是用这个制作的。
楼主电脑如果是OS X系统,那就用calibre for mac,虽然文件比较大,但是在转换格式等方面很方便,合并epub也可以。
其实用sigil是我不得已的选择。一般txt导入进去,出来的效果书籍字体好小。
个人是希望epubbuider出个mac版。
注册时间 最后登录
在线时间42 小时 UID
主题帖子人气
用sigil弄几百万字的那些网络文学,分章是个大问题,批量分章我还不会。。。
幸好许多合集之前用epubbuider已经做好了。
注册时间 最后登录
在线时间73 小时 UID
主题帖子人气
silk99 发表于
我现在也用sigil制作书籍,因为这个软件占内存小,OS X系统没办法装其他,万能制作书籍那个占内存。
以前我 ...
原来真的不能合并啊,sigil没有这个功能有点让人以外,epubbuilder合并很简单,但我没有授权会失去原书的排版效果,请问封釉有完整可编辑代码导入后保留原版样式的epubbuilder吗?
威锋旗下产品
Hi~我是威威!
沪公网安备 29号 丨 沪ICP备号-1 丨 深公安网监备案号 5
增值电信业务经营许可证:
Powered by Discuz!最近有一个好现象,就是AppStore上的国人独立游戏越来越多,质量越来越高,而且也频繁...
上一次算是苹果大获全胜,这一次不知道苹果还有没有这样的运气?
本作是一款全新形态的音乐游戏,在传统的音乐游戏的基础上还加入了完整的故事剧情。
iPhone 5se 几乎可以肯定将搭载 A9 处理器,而不是 A8 和 M8 的组合,下面强行给予两...
或许不久以后 iPhone 产品线也会有 Pro 版本。
本周二,三星发布业界第一款 256GB UFS 闪存芯片,读/写操作 IOPS 分别可达 45000、40...
海外建设很重要,但也不能忘记本土业务的发展。
作为一名邮件管理类新秀,它不仅能对邮件智能归类提醒、还拥有完整的附件管理功能,并...
《拼布(Patchwork The Game)》是一款玩法有些类似《俄罗斯方块》的休闲益智游戏,只...
本周,游戏开发商Channel 4在苹果商店当中推出了其新作《火焰功夫(Fire Fu)》。在游...
美剧《行尸走肉》是根据同名漫画作品改编制作的,整部美剧基本上还是与漫画的故事走向...
爱是世界上最美的语言!为了它,你愿意去付诸一切行动,哪怕穿越宇宙也在所不惜吗?
魔幻题材的游戏一直深受玩家的喜爱,在游戏中玩家可以进入到另外一个完全不一样的世界...
游戏中玩家可以使用的角色有三个,分别是塔胡、勒瓦和波哈图,他们将深入统治迷宫找回...
《翡翠少女:梦之交响曲》是 Artifex Mundi sp. z o.o. 近期推出的一款新作,Artifex ...
一边充电一边拿着iPhone在泡澡,感觉画面还是很美丽的~
最主要它还非常的灵活,非常的灵活,非常的灵活!!!
为什么会有人希望 iPad Air 3 可以有这样一款来自苹果的官方键盘产品呢?
买东西最怕的就是选择困难症,这种“病”的症状到了要买蓝牙音箱的时候会非常严重。原...
或许你手中的iPhone 6s,可能就是最后一款配备3.5mm接口的iPhone了。
Sonos于今天正式宣布将于明天开始正式支持Apple Music,全球各地的Sonos消费者可直接...
或许不久后,你就能在附近的苹果零售店中看到这款贴膜工具。
一家名为Appostasy的公司就推出了一款名为PenSe的Apple Pencil配件,让你的苹果笔不在...
悲催,Macbook没有电子书制作软件了,sigil突然打不开
注册时间 最后登录
在线时间42 小时 UID
主题帖子人气
白苹果, 积分 1088, 距离下一级还需 412 积分
本帖最后由 silk99 于
19:18 编辑
报告一个最新好消息,刚下载了个Ulysses,把书整出来了,而且有下级标题哦,封面直接拽图片进去,听说这款软件系作家好帮手!
从5点到7点,终于能在iBooks里看了,截个图:
.png (165.57 KB, )
19:06 上传
Mac用户要做书的可以试试~~就是不知道能否导入epub,估计不行,只能导入文档。我的《首席女法医系列》又收进2本,威锋这里发了6本了,现在有8本了,可惜做不成了。
————————————
今天整整搞了一天啊,郁闷又悲催。因为有本书出来大结局了,想和之前的合成一本epub。
我用sigil for Mac也差不多一年了,一直用的好好的,今天突然打不开了,毛病兮兮。
重启电脑,关机、再开,重新下载了无数个sigil for Mac,还是老样子打不开啊无法做书啊。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
又下载了iBooksAuthor,根本不好导入epub,此应用程序又大又不好用,无法导入文档。
另外,用pages做书实在太累,而且根本不能合并啊,分章之类累死个人。
Calibre,这个不好使,我想合并章节、合并书籍,无法实现,但转换格式是可以的。
epubbuilder for Mac,居然要下载1个多小时,狂晕,而且我去年下载过了,根本无法做书,今天实在么有软件了,又把它下载了好多次,始终下载不下来,这版本根本不好用。
天哪,Mac电脑就没有好的做书软件了吗?
我以为电脑更新了系统,系统有问题,把“通用”、“防火墙”、“FileVault ”、“隐私”的相关设置关掉,重新启动,再次下载sigil for Mac,依旧不行啊你姥姥的。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
sigil for Mac以前一直用的好好的呀,用sigil也是不得以而用的,将就的,突然就打不开了,别的应用程序全都好用的呀!!!!!!!!!!
书弄不成了,烦。。。
大家有别的Mac电脑OS X系统好用的电子书软件吗?推荐下哈,谢谢~~
最起码能导入txt文档和epub,分章、合并章节、下级子目录之类,最简单的功能!
版主别删帖子啊,实在没办法。
注册时间 最后登录
在线时间42 小时 UID
主题帖子人气
楼主喜欢自己做书,骂人了要
注册时间 最后登录
在线时间42 小时 UID
主题帖子人气
大神来解决下哈。狂躁啊
注册时间 最后登录
在线时间42 小时 UID
主题帖子人气
路过的大爷大奶们帮个忙啊,我今天啥也没干,搞了一天,还是做不成书。各种不好使,没辙了现在发个帖。
百度、谷歌、搜狗翻遍了,还是没有MacBook适合的电子书常用软件!!!!!!!!!!!
注册时间 最后登录
在线时间42 小时 UID
主题帖子人气
楼主单OS X系统,悲催得要死
注册时间 最后登录
在线时间42 小时 UID
主题帖子人气
epub实际上就是一个html的打包,里面的内容都是由html来进行排版,由CSS控制样式的。因此制作epub和制作网页没有太多的区别。
对于初学者,我个人推荐Sigil,这个软件可以允许你编辑HTML和CSS的代码,并且有实时的预览功能。同时还有目录生成和元数据填充等工具,对于初学者是十分方便的。可以说是用于制作epub的一个IDE。而且支持正则表达式,在制作上还是能提供很多方便的。
而对于水平更高的用户,我推荐使用你们喜欢的文本编辑器,比如Sublime Text、notepad++等,我个人使用的是vim。Sigil的文本编辑能力极弱,和专门的文本编辑器根本没有可比性。使用文本编辑器就是用制作网页的方法来制作epub。
另外要提一下,Calibre之类的仅仅是格式转换软件,不是制作软件,你可以用这些工具来生成一个可以看的epub文件,但是如果想要自己制作和编辑,这类转换软件是无能为力的。
注册时间 最后登录
在线时间42 小时 UID
主题帖子人气
就我看到的目前国内ePub的制作水平来说,普遍都做得很差,大多是拿Calibre或者ePubBuilder之流的生成的,有很多不太规范的地方,更有甚者,一个章节的HTML文件可以有好几MB或更大,缺乏合理的拆分,这给解析器带来了很大的麻烦,比如有把金庸全集做成一个ePub的,里面一部小说一个HTML文件,可想而知,这样的ePub文件会带来多大的问题。
注册时间 最后登录
在线时间185 小时 UID
主题帖子人气
到底有办法没有呢?关注
注册时间 最后登录
在线时间1034 小时 UID
主题帖子人气
关注中。。。。。。
注册时间 最后登录
在线时间65 小时 UID
主题帖子人气
安心,放一边看两场电影,过几天自然会解决的~
威锋旗下产品
Hi~我是威威!
沪公网安备 29号 丨 沪ICP备号-1 丨 深公安网监备案号 5
增值电信业务经营许可证:
Powered by Discuz!IBM Bluemix
点击按钮,开始云上的开发!
developerWorks 社区
在 EPUB 文档中,一些问题无法使用常规的验证方法检测。只要文档被证实是格式良好的 XML 并遵守 EPUB 标准,那么它可能看起来是正确的,但却无法在电子阅读器中正确读取。示例包括损坏的段落、不规范的页码和由 OCR 扫描导致的拼写错误。然而,您可以使用两种方法查看并更正错误:使用 EPUB 编辑器 Sigil,以及结合使用 PHP 与 SimpleXML 和 Enchant 库。正则表达式是有效处理的关键。
, 作家兼研究人员, Freelance
Colin Beckingham 居住在加拿大安大略省,是一位自由研究人员、作家和程序员。他拥有金斯顿皇后大学和温莎大学的学位,对园艺、赛马、教育、公共服务、零售和旅游/观光领域都有涉猎。他是数据库应用程序的作者,也是大量报纸、杂志和在线文章的撰稿人,他的研究兴趣包括 Linux 上的开源编程以及语音控制应用程序。您可通过
与 Colin 联系。
EPUB 格式是一种呈现文档的有效方法。它的 XML 结构可确保文档组件位于相应的位置,并且能在各种设备上合理地显示。关于 EPUB 的介绍,请参阅
中 Liza Daly 编写的文章。
这些文档在两种级别上会发生故障:在基本级别,XML 标记或内容是损坏的在更加细微的级别上,检查 XML 无法检测的对于前一种问题,内部的 EPUB 是损坏的,您可以使用 EpubCheck 项目(参阅
相应的链接)。本文剩余内容将探讨第二种类型的问题,这些可能是读者非常厌烦的问题。
XML 执行的严格控制也无能为力。XML 允许许多问题存在,这些问题尽管不足以导致软件故障,但会影响流畅的阅读。很容易了解这些问题是如何发生的,如果发布者在打印页面上使用 OCR 将它转换为文本格式,那么打印页面的所有异常情况都会出现,包括字体不兼容所导致的错误。在商业条件下,编辑人员会手动检查结果,以生成一个改进的版本。但是由于该产品是专门设计用于免费、开源发行版本的,发行者承担不起这些成本。所以,您得到的电子阅读器最终版本虽然不错,但还有改进的空间。示例包括破坏的段段、空白页、奇怪的页码以及拼写错误。
从开发人员的角度讲,挑战是在于如何使用 EPUB 的结构来解决这些问题。本文探讨如何使用 Sigil EPUB 编辑器解决其中一些问题,以及如何结合使用 PHP 与 SimpleXML 和拼写库来解决其他的一些问题。
破坏的段落和空白页我们将破坏的段落作为一个次要问题示例。在 HTML 标记中,此问题表现为:
&p&This is where my paragraph begins, hits the end of a physical page here&/p&
&div class="newpage" id="page-12"&&/div&
&p&and then continues from the top of the next physical page,
finally coming to an end here.&/p&扫描器读到了页末,会添加一个段落标记,而不管它是否用于确定页面句法的完整性,然后从下一页的开头开始,确定从一个新的段落开始,同样不管它是否适合。孤立的段落会使代码保持完整,但会导致不完整的段落。在电子阅读器上,用户可能看到,在同一个设备页面上的两节没有显示页面标记,而是像两个独立的段落一样分开的。
类似地,考虑空白页:&div class="newpage" id="page-128"&&/div&
&div class="newpage" id="page-129"&&/div&上述片段中的页面 129 是否真的存在?可能有必要将它保持空白,否则,在仅需要一个页面时必须生成两个页面,这样很不方便。
拼写错误是另一种不同的问题,您需要对比两个不同的单词列表,而不是查找复杂的模式。可以使用脚本方法独立处理此问题。
SigilSigil(参阅
获取网站和支持页面)是一种 WYSIWYG EPUB 编辑器,它可找到模式匹配类型的错误,并且允许程序员更正它们。请参阅
快速了解正则表达式,参阅
获取更多的详细信息。
可能无法从 Linux&#174; 存储库获得 Sigil,但是可以通过一个预编译的库或源文件的形式提供。在 GUI 中,单击 File & Open 直接打开您的 EPUB。提取 EPUB 并在左侧显示一个组件文件目录,在右侧显示一个浏览器窗格,在此窗格中可以显示各个文件的内容,正如您在电子阅读器或样式代码中所看到的那样。后者是在查找和更正问题过程中使用的一项重要功能。
选择 EPUB 所包含的一个 HTML 文件,双击它在浏览器中打开。然后单击 View & Code View 显示文件的隐藏代码。现在可以看见所有的标记。
假设您希望找到孤立的段落块。您搜索的标准是前面没有正常的句子结束字符的段落结束标记 &/p& 。这些最常用的句子结束字符是句点。Sigil 提供了一种搜索功能 (Edit & Find),在正常的搜索模式下允许您查找如 .&/p& 字符串,但它对查找前面没有句点的段落结束标记没有帮助。对此,您需要正则表达式搜索模式,当您单击 More 时就会看到它。导航到浏览器窗口中的代码顶部,执行以下步骤:
选择 Down 作为方向。选择 Regular expression 作为搜索模式。键入 [^.]&/p& 作为您的 Find what 字符串。
单击 Find Next。此过程应该会找到您所要搜索的内容(如果存在)。如果没有找到任何结果,您可能要临时创建一个结果来检查搜索功能是否有效。
使用此技术一段时间后,您很快就会发现段落可使用句点以外的字符合理地结束。您将发现双引号 (")、感叹号 (!)、问号 (?) 以及可能其他一些字符都能满足完整句子的要求。实现这一点对于正则表达式而言并不是问题。因为方括号表示一个组,所以如果您将 Find what 更改为 [^.?!"]&/p&,搜索通常会接受在段末具有句点、问号、感叹号或双引号的任何内容,将其他内容标记为错误。
破坏段落的另一个指示可能是,段落以 &p& 开头,后跟一个小写字母符号。这个版本的表达式可以是 &p&[a-z]。 另一个是 &p&[0-9],它查找以数字开始的段落。这个符号可能在扫描仪挑选一个在电子阅读器上下文中可能不再相关的页码时有效。
您决定如何修复其中一个错误,这是另一个事项。如果一个页面标记分离为两部分,您可以将该标记移动到真实段落之前或之后,将两部分重新合并在一起形成一个完整的段落。得到的页码是近似的,但不是很准确。
搜索页面标记是一个类似过程。再次使用正则表达式选项,如果 Find what 为 page-[0-9]+,编辑器会搜索任何以文字字符 p、a、g、e 和 dash 开头,并且后跟至少一个或者多个从 0 到 9 中的数字字符的段落。
您很容易发现的一种有趣的分隔符,它把一个单词、段落和页面同时分开。打印版本用连字符或破折号表示分隔符,这很容易在代码视图中看到和搜索:
&p&This is where my paragraph begins, hits the end of a phys-&/p&
&div class="newpage" id="page-12"&&/div&
&p&ical page and then continues from the top of the next physical page,
finally coming to an end here.&/p&在这种情况下,一种使用 Find what 字符串 -&/p& 的全局常规搜索应该很快挑选出他们。
检查页码尽管您可以使用 Sigil 查找和检查分页符和页码,但在超过 100 页的文档中,这么做可能太费事了。一种更简单的方式是使用 PHP 来迭代文档并检查页码。
中的脚本查找并检查 HTML 页面,运行分页符。它找到第 1 页的页码,这通常不为 “第 1 页”,验证每个后续页面是否从第 1 页递增。尽管页码测试非常简单,但它演示了如何使用 OPF 文件查找和检查组件 HTML。
清单 1. 使用 PHP 和 SimpleXML 对 EPUB 进行页面检查&?php
/* epub is a zipped package containing many files
the file "content.opf" contains the pointers to the constituent files
inside content.opf you have
package (root)
-& manifest
which we need to filter for media-type="application/xhtml+xml"
and to check these are real text pages, not just full page images
these are the text chapters which need to be checked one by one
$firstpage = 0;
$oldpage = 0;
// look for the text to be checked
$opf_file = "./OEBPS/content.opf";
if (!file_exists($opf_file)) {
//cleanup();
die("Cannot find the OPF file\n");
echo "Found it!\n";
$xml = simplexml_load_file($opf_file);
// get the manifest items
foreach ($xml-&manifest-&item as $mi) {
if ($mi['media-type']=='application/xhtml+xml') {
echo "Found ".$mi['href']."\n";
if (substr($mi['href'],0,4) == 'part') {
echo "Page number check in document ".$mi['href']."\n";
echo scan_chap("./OEBPS/".$mi['href']);
function scan_chap($chap) {
global $firstpage, $
echo "Trying to page num check section $chap \n";
if (!file_exists($chap)) {
echo "Cannot find the chapter $chap\n";
echo "Found it!\n";
$xml = simplexml_load_file($chap);
foreach ($xml-&body-&div-&div as $pagnumdiv) {
if ($pagnumdiv["class"]=='newpage') {
echo $pagnumdiv["id"]."\n";
$page = (int) substr($pagnumdiv["id"],5);
if ($firstpage == 0) {
$firstpage = $oldpage = $
if ($page != $oldpage+1) echo "Problem at page after $oldpage\n";
$oldpage++;
return "Done...\n";
?&此代码首先为所找到的第一个逻辑页面的页码(在循环开始时设置)和检查的前一页的页码(在每次迭代时更改)设置全局变量。然后它声明 OPF 文件的名称,查找该文件,如果无法找到,则抛出一个错误。如果找到该文件,脚本以 XML 对象的形式打开该文件并查找描述文件中提及的文件名称,这些名称使用 media-type 属性显示为 HTML。在这个特定的 EPUB 文档中,一些 HTML 文件仅包含一个整页图像,因此可忽略。这些页面的文件名包含字符串 leaf,而其他包含扩展文本的文件有一个 part 标签。代码使用子字符串过滤出这些文件。
现在您知道了文件名,可以将此文件读入到它自己的 simpleXML 对象中。迭代 &div& 标签并把那些具有newpage 类属性的筛选出来,您可以找到包含页码的 id 属性的值。您需要让图书告诉您哪个页码是第 1 页,因为首页通常不是显示为第 1 页,在此值存储在全局第 1 页变量之后,您可以继续预测下一页的页码。如果它不是想要的页码,脚本生成一个错误并继续检查。
此脚本不会尝试更改文本。它仅标记它认为可能需要您注意的内容。
使用 PHP、XML 和 Enchant 进行拼写检查拼写是一个不同的问题。对于此问题,您真正会关心 Upon 等事件,OCR 将它读取为 TJpon 或 IJpon,虽然他们很近似但却是错误的。它可能以一些备选词语的形式提供,拼写例程会觉得它很陌生,以至于它提出的建议为不相似或没有帮助。
拼写例程逐个检查单词,将它们与标准的已知列表对比,指出不匹配的单词,提供建议并允许您进行更改。Sigil 可在 EPUB 包中的多个文档之间替换特定的字符串,但您需要结合使用脚本引擎(比如 PHP、Perl、Python 等)和专家库来实现更细化的控制。
较新版的 PHP 现在都包含了必要的挂钩,这些挂钩是在使用 SimpleXML 深入研究 XML 和 HTML 文件时或在使用 Enchant 拼写管理器库时必要的部件。Enchant 能够管理多个不同的基础拼写列表。举例而言,它有助于区分英国英语与美国英语的拼写。
中的脚本使用
中相同的方法分别检查每个描述文件,这一次是逐段地仔细检查,依据已知拼写列表逐个单词地检查。它使用的是与
中迭代 HTML 组件文件的相同方法,并添加需要的指令来访问字典。
清单 2. 使用 PHP、SimpleXML 和 Enchant 对 EPUB 进行拼写检查&?php
// spell check an epub
/* epub is a zipped package containing many files
the file "content.opf" contains the pointers to the constituent files
inside content.opf we have
package (root)
-& manifest
which we need to filter for media-type="application/xhtml+xml"
and to check these are real text pages, not just full page images
these are the text chapters that need to be checked one by one
Acknowledgment: Some of the dictionary-related code
was copied from the PHP Enchant manual page
// set up console for input
$console = fopen("php://stdin","r");
// set up enchant (from PHP manual)
$tag = 'en_CA';
$r = enchant_broker_init();
$bprovides = enchant_broker_describe($r);
echo "Current broker provides the following backend(s):\n";
print_r($bprovides);
$dicts = enchant_broker_list_dicts($r);
print_r($dicts);
if (enchant_broker_dict_exists($r,$tag)) {
$d = enchant_broker_request_dict($r, $tag);
$dprovides = enchant_dict_describe($d);
echo "dictionary $tag provides:\n";
cleanup();
die ("Cannot set up the spell checker\n");
// look for the text to be checked
$opf_file = "./OEBPS/content.opf";
if (!file_exists($opf_file)) {
cleanup();
die("Cannot find the OPF file\n");
echo "Found it!\n";
$xml = simplexml_load_file($opf_file);
foreach ($xml-&manifest-&item as $mi) {
if ($mi['media-type']=='application/xhtml+xml') {
echo "Found ".$mi['href']."\n";
if (substr($mi['href'],0,4) == 'part') {
echo "Need to spell check ".$mi['href']."\n";
echo scan_chap("./OEBPS/".$mi['href']);
function cleanup() {
global $d, $r;
enchant_broker_free_dict($d);
enchant_broker_free($r);
function scan_chap($chap) {
echo "Trying to spell check section $chap \n";
if (!file_exists($chap)) {
echo "Cannot find the chapter $chap\n";
echo "Found it!\n";
$xml = simplexml_load_file($chap);
foreach ($xml-&body-&div-&p as $para) {
echo $para."\n";
// need to spell check the contents of $para
spell_check(trim($para));
if ($i & 5)
return "Done...\n";
function spell_check($para) {
global $console, $d;
$para = str_replace("
"," ",$para);
$para = str_replace(".","",$para);
$para = $para." ";
echo "Checking text : $para\n";
$start = 0;
while ($pos !== false) {
$pos = strpos($para," ",$start);
echo "Found $pos\n";
if (!$pos)
$len = $pos-$
$theword = substr($para,$start,$len);
// tidy up theword which may contain punctuation
$punc = array(':',';',',','"','?','!');
$theword = str_replace($punc,"",$theword);
if ((strlen($theword) & 0) and (!is_numeric($theword))) {
if ($wordcorrect = enchant_dict_check($d, $theword)) {
echo "$theword is OK!\n";
$suggs = enchant_dict_suggest($d, $theword);
echo "Suggestions for &$theword&:\n";
//print_r($suggs);
foreach ($suggs as $k=&$sugg) {
echo "$k =& $sugg\n";
if ($k & $max)
$inp = fgets($console,1024);
$start += $len+1;
?&在这段代码中,您首先要为标准输入声明一个文件指针,以便您能够在拼写检查过程中从键盘获得交互式信息。下一部分创建与字典的连接。请注意,tag 变量表示 en-CA,它在本例中把加拿大英语设置为首选项。结果是,检查器选择 colour 而不是 color,选择 acknowledgement 而不是
acknowledgment,等等。一种更标准的标记设置是 en-US。连接字典后,它对 HTML 文本文件执行一些搜索,像
中一样,但这次没有查找页码 &div& 标记,它查找具有真实文本的段落。
在执行实际的拼写检查之前,该脚本清理段落文本,删除长空格、句点和逗号,以便段落更易于管理,因为我们的目标是逐个词检查。然后,实际的拼写检查首先在段落中逐个单词地进行,忽略数字,将单词与字典对比。如果字典不包含该单词,脚本建议并提供可作为更好的替代词语的单词。在本例中,脚本仅提供前五个替代单词。脚本在每个有问题的单词处都停下来,等待用户从键盘输入。在这时,您可以添加代码来执行更改、忽略一次、忽略整个会话,等等。
结束语Sigil 和 PHP 脚本与 XML 和拼写库相结合,是在查找和修复使用常规 EPUB 检查例程无法检测的错误时非常有用的工具。这些次要的错误是真实的错误还是只是装饰性的问题,取决于文档的上下文,以及硬件阅读器和自身软件快速解决这些问题的能力。
参考资料 (Liza Daly,developerWorks,于 2008 年 11 月发布,2011 年 1 月更新):阅读关于 EPUB 的介绍以及一系列的 EPUB 资源。,(Michael Stutz,developerWorks,2007 年 6 月):查阅这篇关于 UNIX&#174; 系统上正则表达式的介绍。查找可帮助您了解如何为各种程序和语言构建正则表达式的可用工具和技术。(Colin Beckingham,developerWorks,2009 年 3 月至今):阅读关于 XML、语音识别、XHTML、PHP、SMIL 和其他技术的文章。获取您学习 XML 所需的资源。:查找您提升 XML 领域的技能(包括 DTD、模式和 XSLT)所需的资源。访问
,获得大量的技术文章和技巧、教程、标准和 IBM 红皮书。:了解如何成为 XML 和相关技术方面的 IBM 认证开发人员。developerWorks
和 :随时关注这些会议中涉及的技术。:立即加入,了解 developerWorks 上的活动信息。:聆听面向软件开发人员的有趣访谈和讨论。
:观看演示,包括面向初学者的产品安装和设置演示,以及为经验丰富的开发人员提供的高级功能。:了解这个多平台 WYSIWYG 电子书编辑器,它专为编辑 EPUB 格式的图书而设计。:了解如何使用此包装器执行拼写检查,它在多个库上提供了统一性和一致性。:使用这个有用的工具验证 IDPF EPUB 文件。它可检测 EPUB 中许多类型的错误。:下载或 ,开始使用来自
DB2&#174;、Lotus&#174;、Rational&#174;、Tivoli&#174; 和 WebSphere&#174; 的应用程序开发工具和中间件产品。:参与任何一个与 XML 相关的讨论。
:查看开发人员推动的博客、论坛、组和 wiki,并与其他 developerWorks 用户交流。
developerWorks: 登录
标有星(*)号的字段是必填字段。
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件。
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
选择您的昵称
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。
您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
标有星(*)号的字段是必填字段。
(昵称长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
文章、教程、演示,帮助您构建、部署和管理云应用。
立即加入来自 IBM 的专业 IT 社交网络。
为灾难恢复构建应用,赢取现金大奖。
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=XML, Open sourceArticleID=767365ArticleTitle=改进 EPUBpublish-date=

我要回帖

更多关于 excel去除空白行 的文章

 

随机推荐