如果Access格式的书籍无法打开,例如突然断电,或者不正常关机引起数据损坏,可以通过ODBC管理工具来修复,或者使用专用工具提取里面的文章。
判断书籍是否损坏
如果可以建立新的书籍,也可以打开其它书籍,那么可以基本断定,无法打开的书籍出现了问题。
通过ODBC修复Access数据库:
打开控制面板。开始菜单->控制面板

切换到经典模式,然后选择管理工具,ODBC,如下图:

双击打开ODBC

点击 添加按钮(Add)

选择Access (Driver do Microsoft Access (*mdb))。

点击里面的修复按钮(Repair)

文件类型,选择全部,然后找到损坏的书籍:

点击确定按钮,等待一段时间后,就会提示修复成功

如果数据损坏失败,则会提示修复失败,并提示原因。
如果仍然无法,可以使用专用的工具,把数据提取出来。
通过专用的程序提取书籍里面的HTML文件
下载附件的程序,然后解压缩,运行CyberArticle5DumpAccessBook.exe

点击左上角的按钮,选择您的书籍文件。然后点击开始按钮,就可以把书籍里面的HTML提取出来。如下图:

如果通过以上两种方式,仍然无法恢复,说明您的书籍损坏比较严重,可以直接和我们联系。
注意
如果您格式化或者删除了书籍,然后通过恢复软件进行恢复,那么恢复出来的书籍,一般来说都会有问题,无法通过上面这两种方式进行修复。
CyberArticle命令分为两类
1:内置命令,CyberArticle内置的功能。例如新建文章,打开书籍等等
2:插件命令,通过插件来实现的功能。例如文章合并,编辑文章里面的插入日期,批量插入图片,插入链接等等。
这两类命令,需要分别自定义快捷键。
内置命令自定义快捷键
1、在工具栏上面点击右键,选择自定义

2、切换到键盘

选择相应的命令,然后可以指定新的热键,定义好后,关闭对话框即可。
CyberArticle主窗口,编辑文章窗口,都可以通过这种方式指定新的热键。注意:插件命令在这个对话框里面无法找到,因为插件命令是动态生成的。
插件命令自定义热键
1、CyberArticle主菜单->工具->选项->工具->插件

2、点击快捷键按钮

可以给插件命令设置快捷键。因为插件命令是动态生成的,无法指定任意的快捷键。
通过这两种方式,可以给CyberArticle所有的命令重新指定快捷键
1、打开天涯在线书库的网站首页
2、在网页上面点击右键,选择用CyberArticle保存当前网页
在出现的保存对话框上面,点击更改按钮,在菜单中,选择所有链接:

在链接选择框内,选择需要保存的书籍,然后设置下载深度1,选择智能下载。
- 下载深度:表示下载链接的深度。例如货币战争这个链接,对应了天涯里面的货币战争这本书籍的目录,深度为0的话,只保存这个目录。如果深度为1,则保存目录里面第一章,第二章等等对应的文章。依此类推。
- 智能下载:表示下载深度大于等于1的时候,挑选链接的依据。如果子链接的url包含父链接,则进行下载,否则不下载。因为一般来说,这些可能是无关的内容。
单击保存按钮。开始保存。

如上图,CyberArticle将会调用BookBuilder开始下载网页。
保存后的结果,可以看到,选择的书籍,自动都保存下来了。

用这种方法,可以快速的保存批量链接。
另外,您还可以使用获得文章正文插件,自动获得文章的正文,去除广告等等信息。
该本本无限接近5.3正式版本。如果没有大问题,将会在最近发布5.3正式版本。
1:修改类一个Mime解码的错误
2:增加了查看书籍/节点扩展属性的功能,在书籍/节点属性对话框上面:

3:增加了一个宏:导入收藏夹
下载CyberArticle 5.3 RC版本
下载该版本
附件是一段js脚本,解压缩执行后,可以将IE收藏夹内容导入到CyberArticle里面。
注意:本脚本只能在CyberArticle 5.3或者更高的版本中使用。
下面是这段代码说明。
//导入一个目录下面的所有链接,采用递归
//bookguid: 目标书籍GUID
//folderpath: 导入后文章的路径
//objCABookBuilder: CyberArticle.CABookBuilderAutomationApp对象
//objShell: WSript.Shell对象
//objFileSystem: Scripting.FileSystemObject对象
//path: 需要导入的路径
//
function ImportPath(bookguid, folderpath, objCABookBuilder, objShell, objFileSystem, path)
{
//获得路径对象
var objFolder = objFileSystem.GetFolder(path);
//枚举文件
var objSubfilesEnum = new Enumerator(objFolder.Files);
for (; !objSubfilesEnum.atEnd(); objSubfilesEnum.moveNext())
{
//获得文件
var filename = objSubfilesEnum.item();
var objFile = objFileSystem.GetFile(filename);
//
var strFileTitle = objFile.Name;
var pos = strFileTitle.indexOf(“.url”);
if (-1 != pos)
{
//如果是.url文件
strFileTitle = strFileTitle.substring(0, pos);
//objShell.Popup(“file name is: ” + filename);
//
try
{
var objShortcut = objShell.CreateShortcut(filename);
//
//objShell.Popup(objShortcut.TargetPath);
var url = objShortcut.TargetPath;
//
//添加一个url进行下载
objCABookBuilder.AddJob(bookguid, folderpath, url, strFileTitle, “Default”, 0, true, true, 0);
}
catch (e)
{
}
}
}
//枚举子文件夹
var objSubfoldersEnum = new Enumerator(objFolder.SubFolders);
for (; !objSubfoldersEnum.atEnd(); objSubfoldersEnum.moveNext())
{
var subfolder = objSubfoldersEnum.item();
//
var objSubFolder = objFileSystem.GetFolder(subfolder);
var subfoldername = objSubFolder.Name;
//导入子文件夹
ImportPath(bookguid, folderpath + “\\” + subfoldername, objCABookBuilder, objShell, objFileSystem, subfolder);
}
}
//CyberArticle.CAAutomationApp对象
var objCA = new ActiveXObject(“CyberArticle.CAAutomationApp”);
//获得选中的节点
var objSelectedNodes = objCA.SelectedNodes;
if (objSelectedNodes != null && objSelectedNodes.Count > 0)
{
var objShell = new ActiveXObject(“WScript.Shell”);
//
//获得第一个选中的节点
var objSelectedNode = objSelectedNodes.Item(0);
if (objSelectedNode.Type != 0)
objSelectedNode = objSelectedNode.ParentNode;
//
//获得书籍信息和相应的目录路径
var strBookGUID = objSelectedNode.Book.GUID;
var folderpath = objSelectedNode.GetTitlePath(true, false);
//objShell.Popup(“title path: ” + folderpath);
//创建BookBuilder对象,用来下载链接
var objCABookBuilder = new ActiveXObject(“CyberArticle.CABookBuilderAutomationApp”);
//获得收藏夹路径
var strPath = objShell.SpecialFolders(“Favorites”);
strPath = objShell.ExpandEnvironmentStrings(strPath);
//objShell.Popup(strPath);
//获得文件夹对象
var objFileSystem = new ActiveXObject(“Scripting.FileSystemObject”);
//导入文件夹
ImportPath(strBookGUID, folderpath, objCABookBuilder, objShell, objFileSystem, strPath);
//开始下载
objCABookBuilder.StartDownload();
}
从这一段简单的代码可以看出,CyberArticle的扩展性是非常强大和易用的。只要您稍微具有一定的脚本编程能力,就可以很容易的对CyberArticle进行扩展。
下个CyberArticle版本,将会包含这段脚本,并制作成一个CyberArticle宏,添加到CyberArticle程序里面,方便使用。
CyberArticle并不是一个专用的Blog离线发布软件,但是因为包含了WordPress发布插件,使得CyberArticle可以方便的用于发布WordPress文章。
Live Writer是一个专用的Blog离线发布软件,支持主流的Blog系统。
严格来说,这两个软件并不是一类软件。但是针对WordPress系统,使二者有了一定程度的可比性。下面作一个比较简单的比较。(仅仅针对WordPress)。
文章编辑功能
离线发布,最重要的就是文章编辑。下面是编辑文章的界面:
CyberArticle

Live Writer

下面是一个比较
|
功能
|
CyberArticle
|
Live Writer
|
|
编辑
|
撤销,重做,剪切,复职,粘贴
|
有
|
有
|
|
选择性粘贴
|
|
|
|
查找,替换
|
|
查找
|
|
|
|
|
|
|
常规
|
图像,表格,日期,时间,水平线,批量插入图片,书签(页内链接),链接,返回到顶部链接,索引,HTML组件。
|
|
|
|
插入HTML组件:可以插入大量预定以好的HTML代码,例如各种各样的表格,文字等等。
批量插入图片:可以批量插入本地图片。 书签:可以插入业内链接,实现页内跳转。
|
|
|
|
|
样式,字体名称,字体大小,字体样式,字体颜色,段落格式
|
样式,字体名称,字体大小,字体样式,字体颜色,段落格式
|
|
|
字体大小,支持多种字体大小:8,9,10,11,12,14,16,18,20,24,36,72
|
仅支持8,10,12,14,18,24,36。不支持中文常用的9号字
|
|
表格功能
|
|
插入表格,插入行,列,删除行,列
|
插入表格,插入行,列,删除行,列
|
|
|
|
|
|
|
|
宏功能,DOM橡皮擦,标记文字,模板功能,HTML标记导航,荧光笔,源代码着色功能
|
|
从上面的表格中可以看到,CyberArticle的编辑功能要更多一些。但是在测试过程中,发现Live Writer粘贴HTML格式的时候,无法显示HTML里面包含的本地图片。这是一个比较大的问题。
Blog发布功能
二者都可以直接发布文章。
CyberArticle在发布文章的时候,会出现对话框,要求输入服务器信息(如果已经发布过,则保存相关信息),文章类型(页面还是Blog),分类。
Live Writer在新建文章的时候,就需要确定是页面还是Blog。编辑文章的时候,则要求直接选择分类。点击发布按钮后,直接发布。
二者没有什么本质区别,Live Writer还支持设置Tag。但是测试中,无法正常使用,也无法显示Tag。CyberArticle的Blog无法直接支持Tag。
文章管理功能
CyberArticle是知识管理软件,所有的文章,都保存在本地。即文章发布后,本地和Blog系统,各自都有自己的文章。如果以后需要重新编辑文章,直接在本地编辑后,重新发布上去,就可以将在线的文章更新成新的文章。也可以强制选择,发布成新的文章。
Live Writer的文章发布之前,会当成草稿保存在本地。发布后,从草稿中删除。如果以后需要重新编辑,则需要从在线的文章读取。因此Live Writer文章在本地,并没有备份。
CyberArticle还拥有更多的管理功能,例如批量替换,批量文章处理,制作电子书等等功能。
结论
如果您的文章,大部分都是原创内容,那么用Live Writer或者CyberArticle,区别并不是很大。但是因为CyberArticle会把文章保存在本地,因此对于您的数据安全性,会有更好的保证。即使以后您从一个Blog转移到另外一个Blog,或者您的Blog服务商突然停止服务,您的文章也都保存在本地,完全不用担心这个问题。
如果您的文章大部分都是从网络上复制而来的,那么用CyberArticle,无疑会让您更加得心应手。因为CyberArticle本身就是一个知识管理软件,致力于网络知识的获得和管理。而在这方面,可以说是独一无二的。
总之,如果您使用了WordPress作为您的Blog系统,那么用CyberArticle作为离线发布工具,可以说是最好的选择。
安装该插件后,Google桌面搜索(Google Desktop Search) 就可以搜索到 CyberArticle书籍文件。
使用
直接下载附件安装即可。Google桌面搜索服务会自动对CyberArticle 书籍(xbook文件)进行索引。索引建立后,就可以进行全文检索了。
注意
- 不在书籍列表里面的书籍,不会建立索引。
- 远程书籍,不会建立索引。
- 被加密的文章,不会建立索引
- 在安装该插件前,请首先安装Google桌面搜索软件。
CyberArticle IFilter插件,可以用于Windows Search服务(Vista或者更高系统),Windows索引服务,MSN桌面搜索,IIS,SharePoint Portal Server, Windows SharePoint Services, Site Server,Exchange Server,SQL Server及其它基于微软搜索技术之上的产品。
使用
直接下载附件安装即可。上述服务会自动对CyberArticle 书籍(xbook文件)进行索引。索引建立后,就可以进行全文检索了。
注意
- 不在书籍列表里面的书籍,不会建立索引。
- 远程书籍,不会建立索引。
- 被加密的文章,不会建立索引
1:增加了版本控制功能。可以保留文章的修改记录,允许恢复任意历史记录。
使用:首先,在书籍属性里面,启用版本控制功能。

每天只保留一个副本,可以减少保留的记录。否则,对于频繁编辑某些文章的话,可能会有很多的历史记录被保存,造成大量的数据冗余。如果您使用了编辑文章的时候,自动保存功能,则最好选中这个选项,以避免生成太多的历史数据。
以后再编辑文章的时候,程序会自动保留以前的数据。
您可以在文章属性里面,找到历史记录:

可以选择查看任意一个历史记录,也可以选择任意一个历史记录,恢复成当前的状态。
目前版本控制功能还比较简单,但是对于需要保留修改痕迹的朋友来说,还是很方便的。而且这个功能,对于多人使用MySQL/SQLServer书籍的朋友,会更有用一些,可以保留每一个人的修改记录。
2:添加快捷方式类型的附件的时候,可以选择是否将目录替换成环境变量。

这样当您重新安装系统,或者更换电脑,快捷方式仍然会生效。
同时,还增加了两个特殊的环境变量:
%BookFolder%:当前书籍所在的文件夹。
%MyBooksFolder%:默认的书籍保存文件夹。通常是我的文档\My Books。
这样,您可以将一些附件,例如mp3/视频等等文件,放在书籍文件夹或者子文件夹里面。即使书籍更改了目录,或者更换电脑,都可以保持正确的链接。
3:书签功能的改进。
从这个版本开始,您可以放心使用书签功能,而不用担心因为系统重新安装,或者更换电脑等原因,导致书签实效。只要您的书籍在书籍列表内,就可以正确找到相应的文章。这样,您可以利用书签功能,作为一个混合的分类功能:不同的书籍,可以在一起分类;同一篇文章,可以在不同的分类下面。
下载CyberArticle 5.3测试版本
下载该版本
今天从一个用户那里发现一个问题,现象是CyberArticle保存网页的时候,经常会出现ExecCommand.exe出错,或者经常出现操作必须使用一个可更新的查询这样的对话框,如下图:
ExecCommand.exe出错:

无法保存网页

重新启动系统后,上面的问题可以缓解,但是过一段时间后,还是会出现。
操作系统:Vista
杀毒软件:卡巴斯基2009
经过摸索,发现是杀毒软件引起的。解决办法如下:
1:打开卡巴斯基:
点击右上角的设置按钮:
选择威胁和排除,切换到信任程序:
点击添加按钮,将CyberArticle安装目录下面的CyberArticle.exe, ExecCommand.exe这两个程序,添加到信任程序里面。
依次点击确定按钮,保存设置。
然后重新启动系统,问题获得解决。
原因猜想:因为CyberArticle书籍文件都很大,通常都在几百M甚至更大,在保存网页的时候,杀毒软件会自动扫描书籍文件,但是这个过程可能会很长,导致CyberArticle出错。
因此将CyberArticle程序添加到信任程序里面,避免杀毒软件检查xbook文件,也就避免了这个问题。
如果您遇到了类似的问题,也可以这样处理一下。对于其他杀毒软件,操作方法类似。
最近评论