本文介绍了如何在C#里面,使用CyberArticle提供的COM组件,来导入HTML文件(或者其他类型的文件,例如text, pdf, jpg, bmp, png等等)
1、建立一个C#的Windows应用程序工程。
2、添加COM引用
在工程节点上面,点击右键,在菜单中选择 Add Reference,然后选择COM标签页,在列表中,选择CyberArticleBook 1.0 Type Library和CyberArticleImportHTML 1.0 Type Library。如下图。

然后单击OK按钮。这样在工程的References节点下面,将会包含CyberArticleBookLib和CyberArticleImportHTMLLib。

3、设计Form1
在Form1.cs里面,增加引用:
//引入CA COM 组件
using CyberArticleBookLib;
using CyberArticleImportHTMLLib;
在Form1上面,添加两个按钮,分别是Batch Import和Add HTML。分别编写相应的单击事件代码。
Batch Import按钮单击事件代码:用来完成批量导入HTML文件
private void button1_Click(object sender, EventArgs e)
{
//创建CABookCollection对象
CABookCollection objBookCollection = new CABookCollection();
//添加一个本地书籍文件
int nBookIndex = objBookCollection.AddLocalBook(“e:test.xbook”);
//获得本地书籍的BookGUID
string strBookGUID = objBookCollection.get_GUID(nBookIndex);
//创建书籍对象
CABook objBook = new CABook();
//打开本地书籍
objBook.Open(strBookGUID);
//创建一个导入文件Collection对象
CAImportHTMLDataCollection objDataCollection = new CAImportHTMLDataCollection();
//添加需要导入的文件,标题,所在书籍文件夹(相对导入目录位置),HTML文件名,也可以是text,图片,pdf,rtf,等等
//CA会自动查找或者创建书籍里面的文件夹
objDataCollection.Add2(“My First Html File”, “”, “e:1.htm”);
objDataCollection.Add2(“My Second Html File”, “My Folder”, “e:2.htm”);
//如果需要同时设定文章的URL,可以用
objDataCollection.Add3(“My 3rd Html File”, “My Folder”, “e:3.htm”, “http://www.wizbrother.com/”);
//创建导入HTML对象
CAImportHTML objImport = new CAImportHTML();
//导入
objImport.Import(objBook.RootNode, objDataCollection);
//关闭书籍。因为C#对象在离开作用域的时候不会自动销毁(需要垃圾回收),所以最好手工关闭书籍(关闭数据库连接)
objBook.Close();
}
要顺利执行这个代码,您应该在E盘根目录下面,准备一个Test.xbook, 1.htm, 2,htm, 3.htm这几个文件。
Add HTML按钮单击事件代码:用来直接创建一个文章
private void button2_Click(object sender, EventArgs e)
{
//创建CABookCollection对象
CABookCollection objBookCollection = new CABookCollection();
//添加一个本地书籍文件
int nBookIndex = objBookCollection.AddLocalBook(“e:test.xbook”);
//获得本地书籍的BookGUID
string strBookGUID = objBookCollection.get_GUID(nBookIndex);
//创建书籍对象
CABook objBook = new CABook();
//打开本地书籍
objBook.Open(strBookGUID);
//获得根节点
CANode objRoot = (CANode)objBook.RootNode;
//在根节点下面创建一个新的文件夹
CANode objNewFolder = (CANode)objBook.CreateFolder(objRoot, “My New Folder”);
//在新建的文件夹下面,创建一个新的文章
CANode objNewArticle = (CANode)objBook.CreateArticle(objNewFolder, “My New Article”);
//
StreamReader sr = new StreamReader(“e:1.htm”);
//获得html文字
string htmlText = sr.ReadToEnd();
//
sr.Close();
//创建profile Collection
CAProfileCollection objProfileCollection = new CAProfileCollection();
//获得默认profile
CAProfile objProfileDefault = (CAProfile)objProfileCollection.DefaultProfile;
//用html内容,初始化文章。文章资源位置,依赖于第二个参数:url。但是这个参数,不会保存到书籍中。
objNewArticle.InitArticle(htmlText, “e:1.htm”, objProfileDefault);
//如果需要设置文章的url,需要手工设置;
objNewArticle.URL = “http://www.wizbrother.com/”;
}
4、测试代码
编写代码后,编译工程,然后执行。
点击Batch Import按钮,就可以一次将E:1.htm, E:2.htm, E:3.htm导入到书籍E:Test.xbook里面。
点击Add HTML,可以将e:1.htm文件,导入到E:Test.xbook里面。
您可以直接下载附件来进行编译测试(VS2005)。
5、说明
注意:Test.xbook, 1.htm, 2,htm, 3.htm这几个文件,您需要自己准备(或者使用附件中的文件),并且放在E:盘根目录下面。您也可以修改C#代码,使用其它位置的文件。
上面的例子代码,没有考虑异常。您在使用COM组件的时候,需要考虑异常情况。
所有的CyberArticle COM组件,请参考CyberArticle开发者手册(CyberArticle 主程序 -> 主菜单 -> 帮助 -> CyberArticle开发者手册)。
最近评论