PageByPage: An application to view & edit plain text file.

作者:马健
邮箱:stronghorse_mj@hotmail.com
主页:老马的原创空间

FAQ
使用说明
  一、软件安装/删除
  二、软件使用
    1、阅读模式
    2、编辑模式
    3、公共操作
附录A 鸣谢
附录B 版本更新记录

FAQ

Q:PageByPage是什么?
A:这是一个专门针对文本版小说的阅读器兼编辑器,具有下列特点:

  1. 提供分页阅读模式,模拟实体书籍的显示界面与翻页动画,能够设置桌面、封面、页面的图案或颜色,能够设置字体、字号、文字颜色、行距、下划线等。
  2. 提供文字编辑模式,包括常用编辑功能,如多级undo/redo、剪切、复制、粘贴、删除、查找、替换等。
  3. 分页阅读是既支持横排显示,也支持竖排显示。竖排时阅读顺序是从右往左。
  4. 能够通过自动恢复、书签等功能记忆阅读位置,一次看不完下次接着看。
  5. 能够按照一定的查询条件搜索全文,生成章节列表,便于跳转、定位。
  6. 提供书库管理、老板键等常用功能。

Q:已经有MyReader等阅读器,为什么还要开发PageByPage?
A:秒开,我只想要秒开。如果非要加一个限制,我希望10 MB以内的文件都能秒开。
我经常从网上下载小说,下载后一般先打开,拖着滚动条前后看一下,如果不合口味就直接删除,以免浪费硬盘和时间。MyReader、记事本等打开大文件太慢了,其他阅读器也有各种各样的问题,所以就综合百家之长,搞了这么一个东东。
PageByPage说白了就是个大杂烩,参考了很多其他软件,如翻页效果就参考了DesktopAuthor等,其实在SpecEffect里还有一些动画效果,不过我觉得爆炸、马赛克、百叶窗等 花里胡哨的效果和看书实在不搭调,所以就没搬过来。

Q:PageByPage有什么限制?
A:有下列限制:

  1. 章节列表最多4096项,每项30个字符,多了没有。
  2. 内部处理很多情况下都是针对简体中文,因此只适合阅读简体中文,也不会发行除简体中文之外的其他语言版本。
  3. 支持ANSI、Unicode、utf-8编码的文本文件。Unicode编码的文件必须以FE FF或FF FE开头;utf-8文件以EF BB BF开头,也可以没有文件头。在不以EF BB BF开头的情况下,自动识别是否是utf-8编码的方法是从Windows 2000的记事本学来的,所以识别的准确性与它差不多。
  4. 仅支持双字节Unicode字符,不支持3字节扩展Unicode字符。再说一次,我看的是小说,不是《康熙字典》。
  5. 文本文件长度在20 MB以内应该没有问题,再大就不好说了。现在我也没有见过超过20 MB的小说。

Q:为什么不支持全屏模式?
A:全屏会引起显示区域的变化,需要重新分页,来回切换时很难保证阅读位置一致。

Q:为什么不支持自动排版?
A:从做TextForever的经验看,我相信适用于所有书籍的自动排版功能是不存在的,总要人工干预一下才行。所以我看书的流程是:先用PageByPage快速看一下值得不值得看下去,看不下去的自然就删掉,看得下去的就用TextForever重新排一下,然后复制到MP4、手机等设备中,因地制宜用不同的设备或电脑看。因为这些手持设备中的浏览器不一定有排版功能,所以手动排版是免不了的,这种情况下PageByPage也就没有必要再多此一举。

Q:为什么不支持多窗口?为什么不提供背景音乐播放功能?为什么不支持各种各样的电子书格式?为什么没有这样、那样的功能?
A:太麻烦,而且对我来说无用,我坚信“简单就好”。

Q:软件启动的时候为什么会感觉有延迟?
A:为了加快分页速度,软件启动的时候会查询整个字体文件,记录每个字符的宽度,这需要一点时间。 另外由于竖排、横排查询字符宽度使用的是完全不同的方法,因此如果选择了竖排显示,启动时的延迟会小一点。

Q:不同编码的文本文件,存盘后是什么编码?
A:Unicode、Unicode big endian、utf-8编码的文件存盘后,仍然保持原编码。ANSI编码的文件在存盘前会先在内存中自动检查一下,如果存在不能用ANSI表示的字符,则转换成Unicode存盘,否则仍然按ANSI编码存盘。

Q:我觉得工具条按钮太小,按钮排布不合理,怎么办?
A:选择“查看->自定义工具栏...”菜单。

使用说明

一、软件安装/删除

本软件安装非常简单:创建一个文件夹,将下载下来的ZIP包解压到该文件夹即可。

本软件的删除也很简单:直接删除从ZIP包中解压出来的所有文件及运行过程中生成的文件即可。

ZIP包中包括下列文件:

  • PageByPage.exe。这是软件的主程序。
  • PageByPage.htm。本帮助文件。

如果您下载到的ZIP包中还包括其它文件,毫无疑问不是我放进去的,有广告或木马之嫌疑,请立即删除。

另外程序运行过程中还会生成以下文件:

  1. PageByPage.ini。这个是参数保存文件,第一次运行后生成。退出PageByPage,删除此文件,再重启PageByPage,即可恢复缺省参数。
  2. PageByPage.bmk。这个是书签文件,如果选了“加入书签”,就会生成此文件。
  3. PageByPage.chp。章节列表的查询关键字表。在章节列表界面中点了“设置”后就会生成此文件。删除此文件后重启PageByPage,就会恢复缺省关键字表。
  4. PageByPage.blb。书库文件,如果在“书库管理”中增加了文件夹,就会生成此文件。

二、软件使用

1、阅读模式

第一次运行本软件,启动后就进入阅读模式。在此界面中,按页显示书籍内容,通过鼠标点击、快捷键、滚动条、跳页等功能改变阅读位置。如果想对阅读内容进行编辑,可以切换至编辑模式。

可以用以下方式打开文件:

  • 点击“文件->打开”菜单或工具条上的“打开”按钮,或按快捷键Ctrl+O。
  • 在没有打开任何书籍的情况下,在阅读区双击鼠标左键。
  • 从资源管理器拖拽文件过来。
  • 按Ctrl+W或Ctrl+H,打开文件列表,从中选择文件。
  • 在命令行参数中指定需要打开的文件。

打开后的翻页方式:

  • 用菜单、工具条按钮、快捷键。
  • 鼠标左键单击,如果单击的是窗口左侧,则向前翻,否则向后翻。如果是竖排显示,则相反。
  • 拖动窗口右侧的滚动条。
  • 拨动鼠标滚轮,拨一格翻一页。

打开文件后的快捷键列表:

快捷键 功能
Ctrl+E 切换至编辑模式
Home 跳至文件头
End 跳至文件尾
↓、→、PgDn、空格 下一页
↑、←、PgUp、BackSpace 上一页
Ctrl+→ 前进
Ctrl+← 后退
Ctrl+T 显示设置

阅读模式对常用功能提供右键快捷菜单,可以通过单击鼠标右键,或按键盘上的快捷菜单键调出快捷菜单。

阅读模式中的显示效果通过“查看->显示设置”(快捷键Ctrl+T)或工具条上的“显示设置”按钮进行设置:

大项 小项 含义
页面布局 显示模式 自适应单双页:书页铺满整个显示区,如果显示区宽度大于高度,则双页显示,否则单页显示。
单页显示:强制按单页显示,页宽用“单页模式下书籍宽度”设定,多余的部分用“桌面图案”或“颜色”填充。
桌面图案 只有在单页模式,或编辑模式下才会显示桌面,即在阅读区中,书籍之外的空间。
颜色 只有在“桌面图案”选“无”时,才能选择桌面颜色,以代替桌面图案。
单页模式下书籍宽度 在单页模式或编辑模式下,书籍的像素宽度。缺省情况下会按照当前屏幕分辨率自动变化,手工设置后则保持不变。
封面 内置图案 封面就是书页外的那一圈,选择不同的图案模拟不同的材质,
颜色 只有在封面图案为“无”时,才允许选择封面颜色,以代替封面图案。
页面 内置图案 页面背景图案
颜色 只有在页面背景图案为“无”时,才允许选择页面颜色。
预设颜色方案 系统内部事先定义的一些颜色组合,包括页面颜色、文字颜色。
中缝 只有在双页显示时,才会有中缝。
文字 字体 文字显示字体。
颜色 文字显示颜色。
大小 文字显示的字号。
高度 文字显示行的高度(相对于字号的百分比),用于控制行间距。如选择150%,则表示实际显示行的高度是字号的150%,多出来的50%其实是行间距。为了保证下划线的显示位置,在行间距不足3个像素时,会自动保持3个像素的最小间距。
加粗 显示文字是否需要加粗。
显示下划线 是否需要显示下划线。
下划线颜色 显示下划线时的颜色。
翻页 动画 翻页时的动画。仅在向前翻一页、向后翻一页时才会显示动画,如果直接翻到文件头或文件尾,或用滚动条、鼠标滚轮翻页时,均无动画。

在阅读模式下,通过“编辑->编辑模式”、工具条按钮“编辑模式”、快捷键Ctrl+E、右键快捷菜单中的“编辑模式”均可进入编辑模式。在单页模式下,阅读模式的第一行就是进入编辑模式后的第一行,而在双页模式下,进去后看到的究竟是左侧页面的第一行还是右侧页面的第一行,是靠当前鼠标位置决定的:如果鼠标在显示区的左侧,则以左侧页面为准,否则以右侧页面为准。

所以虽然有多种方式进入编辑模式,但最准确的还是快捷键或右键菜单。另外本软件具有模式记忆功能,即软件退出时如果处于阅读模式,下次进入时就还是阅读模式,否则就是编辑模式

2、编辑模式

进入编辑模式后,可以使用常用的编辑功能对文字进行编辑,包括剪切、复制、粘贴、删除、查找、替换等。这些功能可以用菜单、工具条按钮、快捷键,也可以用右键菜单调用。

与编辑模式不同,在用双击鼠标左键打开文件时,必须双击编辑框之外的区域才起作用,在编辑框内双击鼠标左键是选词。

另外需要注意的是:为了保证快捷键的兼容性,在编辑模式下空格键是“下一页”,Shift+空格才是插入空格

编辑模式下的常用快捷键:

快捷键 功能
Ctrl+E 结束编辑模式,进入阅读模式
空格 下一页
Shift+空格 插入空格
PgDn 下一页
PgUp 上一页
Home 光标移动到行首
End 光标移动到行尾
Ctrl+Home 光标移动到文件首
Ctrl+End 光标移动到文件尾
箭头键 上下左右移动光标
Ctrl+Z 插销上一次操作,最多可以插销100次
Ctrl+Y 重复上一次操作,最多可以重做100次
Ctrl+X 剪切
Ctrl+C 复制
Ctrl+V 粘贴
Del 删除
Ctrl+A 全选
Ctrl+F 查找
F3 查找下一个
Ctrl+R 替换
鼠标滚轮 滚动一行

本软件的查找、替换功能是从MFC的CRichEditView源代码复制过来的,但做了一些改进:

  • 允许进行“方向”选择。
  • 被替换的内容允许“撤销”,但受100次限制。

另外翻页、翻行、鼠标滚轮、滚动条也在原始RichEdit控件基础上进行了校准。

编辑模式下也可以调用“显示设置”,但相当于阅读模式的单页显示,因此桌面图案/颜色、单页显示宽度等都起作用,但“文字”框内的高度、下划线选项不起作用。

3、公共操作

不论是阅读模式还是编辑模式,都有一些功能是通用的功能,包括书签、书库管理、章节列表等。

通用功能对应的快捷键包括:

快捷键 功能
Esc 传说中的“老板键”,也称“老板来了”,按下后主窗口缩成屏幕右下角的小图标,鼠标点击小图标则恢复主窗口。
Ctrl+O 打开文件
Ctrl+S 保存文件,只有在编辑模式下并且对文件进行修改后才有效
Ctrl+P 打开章节列表
Ctrl+B 加入书签
Ctrl+G 书签管理
Ctrl+W 打开文件列表,便于从中选择打开文件
Ctrl+H 打开缺省书架,便于从中选择打开文件
F1 打开本帮助文件

书签的作用:

如果选择了“自动恢复”,每次启动本软件时都会自动打开上次退出时正在阅读的文件,并自动定位到上次退出时的位置。但是这个功能只能记忆一本书的位置,如果需要记忆多本书的位置,就需要先“加入书签”,在需要打开的时候再点“整理书签”,从中双击需要打开的书签。

从“文件”菜单下选择最近打开过的书籍,则自动定位到文件头。

章节列表的作用:

在阅读的时候,有时希望能够快速跳到某个章节,网上流传甚广的“多模式电子书”也以此为卖点之一。为了满足此项需求,本软件提供章节列表功能,通过正则表达式对全文进行搜索,抽取出章节列表,点击即可跳到选定的章节位置。

打开章节列表后,点“设置”按钮可以对搜索表达式进行配置。配置界面中各项的含义:

  • 关键字前允许出现的字符数:在关键字前允许出现的无关字符数。有时候在“第×章”之前会出现“VIP章节”或书名等字符,这些字符需要被过滤掉。但此值也不宜过大,否则可能会把书中的正常内容误判为关键字。如果此值为0,则只过滤行首的空白符,包括全角/半角空格、制表符等。
  • 关键字后需带分隔符(半/全角空格、制表符、换行符):按照一般排版习惯,在关键字后都会带分隔符,用此选项可以保证匹配精度。但也不排除某些懒人排版的时候会不带分隔符,所以做成可以配置。
  • 关键字:用于标示章节的关键字。关键字中如果含“×”,则进一步转换成正则表达式匹配符。

匹配符选项:

  • 半角数字(0~9):扩展成“0123456789”
  • 全角数字(0~9):扩展成“0123456789”
  • 中文数字(一~九):扩展成“零一二三四五六七八九十百千”
  • 中文大写数字(零~玖):扩展成“零壹贰叁肆伍陆柒捌玖拾佰仟”

关键字越多、匹配项越多,速度越慢,所以在不需要的时候,可以从关键字列表中去掉某些关键字前面的勾号,使其不参与匹配。

如果在阅读模式中点击“刷新”,则在“位置”栏显示的是章节标题对应的页码,否则是百分比。注意在改变显示区域大小造成重新分页的情况下,章节列表不会自动刷新,只有在手工点击“刷新”按钮后才会刷新。

书库的作用:

一般人都习惯把自己看的电子书存放在固定的文件夹下,或按照某些分类条件设置子文件夹。本软件把不同的文件夹看作不同的书架,其中有一个是缺省书架,可以用最快速的方式打开,便于从中选择自己想看的书。

与书库相关的功能包括:

  • 文件列表:在窗口左侧打开文件列表,其实就是一个文件选择对话框,从中选择自己想打开的文件,用鼠标右键菜单也可以完成基本的文件操作功能。每次启动后第一次打开文件列表均定位到“桌面”。
  • 文件定位:打开文件列表,进入当前正在阅读的文件所在的文件夹,选中当前文件。
  • 书库管理:将常去的文件夹组织成书库,设置一个缺省书架。
  • 缺省书架:如果在“书库管理”中设置了缺省书架,则打开文件列表并进入之,否则只是单纯地打开文件列表。

书库相关功能其实是在UnicornViewer v0.26中以早期ComicsViewer的“文件列表”功能为基础搞出来的,现在已经扩散到了ComicsViewer、MyReader及PageByPage等软件中。

附录A 鸣谢

本软件的图像解码采用了Davide PizzolatoCxImage
本软件的文字分页算法参考了瑞星微公司RK27XX系列芯片的SDK开发包中的电子书源代码,毕竟我用过两款分别基于RK2706B、RK2708的MP4看电子书。
阅读模式界面和功能参考了alreader2、Cool Reader2、DesktopAuthor等优秀软件。

在此对以上各位表示感谢!

附录B 版本更新记录

Version 1.11
功能增强:竖排显示时,括号、引号、书名号、省略号、破折号等也按照竖排显示。
错误修正:文字高度比较小时,竖排显示会造成下划线覆盖到文字上。

Version 1.10
新增功能:增加“竖排显示”选项。选择竖排显示后,阅读顺序是从右到左,鼠标单击翻页也与横排显示相反。

Version 1.09
功能增强:在搜索章节列表时,自动忽略前导空格,即“章节查询设置”对话框中,“关键字前允许出现的字符数”选项的数值不含前导空格,包括半角空格、全角空格、制表符。
功能增强:在更改章节列表的设置后,自动刷新章节列表,省掉一次鼠标点击。
功能增强:文字大小最大放宽至100点。
功能增强:支持不是以EF BB BF开头的utf-8文件。

Version 1.08
功能增强:在打开章节列表时,如果正在浏览书籍,则自动刷新章节列表,省掉一次鼠标点击。

Version 1.07
新增功能:增加“自定义工具栏”功能,可以对工具栏按钮、文字、图标等进行调整,方便使用大屏幕的用户。
功能增强:新增了一些桌面、纸张的内置图案。
功能增强:换了一套真彩工具栏图标,支持大、中、小三种尺寸。
功能增强:在章节列表中,支持用“两”代替“二”的写法。

Version 1.06
功能增强:优化存盘速度。
功能修正:Unicode/Unicode big endian/utf-8编码的文件存盘后,仍然保持原编码,而不是全部转换成ANSI编码。

Version 1.05
功能增强:在章节列表中,自动过滤重复行。
错误修正:在“查找”时,“向上”选项不起作用。

Version 1.04
新增功能:可以设置章节列表的字号。
新增功能:章节列表自动显示当前阅读位置所在的章节。
新增功能:“跳至指定页”能用于编辑模式,按百分比跳。
功能增强:能够记忆章节列表的位置。
功能增强:在阅读模式下,状态条上除显示页码外,还显示百分比。
错误修正:用“跳至指定页”跳页后,状态条没有及时更新。

Version 1.03
新增功能:在章节列表中显示页码(阅读模式)或百分比(编辑模式)。
错误修正:从资源管理器右键菜单打开会出错。

Version 1.02
错误修正:某些右键菜单项与主菜单不一致。

Version 1.01
功能修正:在阅读模式中,只有在还没有打开任何书籍的情况下,双击鼠标左键才会弹出“打开”对话框。以免在正常阅读时,因为鼠标点击翻页太快造成误操作。

Version 1.00
1. 提供阅读功能。
2. 提供编辑功能。
3. 提供章节列表功能。
4. 提供书库管理功能。
5. 提供书签、老板键等功能。