制作Aspose CHM文档的过程记录
欢迎和大家交流技术相关问题:
邮箱: jiangxinnju@163.com
博客园地址: http://www.cnblogs.com/jiangxinnju
GitHub地址: https://github.com/jiangxincode
知乎地址: https://www.zhihu.com/people/jiangxinnju
最近公司需要使用Aspose组件开发相关内容,但是网上找不到理想的参考文档,官网访问速度也慢的可以。所以打算自己做份CHM文档,做的过程中遇到很多困难,这里记录一下。
第一步是在Aspose官网上把javadoc文档爬取出来,我使用的工具是TeleportPro。爬取的网址是
经过尝试爬取深度设为7最好。爬出来发现内容很多,有一个多G,而且有很多杂乱的内容,我们知道一般javadoc文档只是html和css的组合,不需要js和各种图片,所以仅保留了合适的目录下的html文档和api-reference-ui.css文件,其余文件全部删除。
但是这是发现由于删除了一些文件,导致html文件中对api-reference-ui.css引用失效,于是用notepad++对引用路径进行批量替换(../../../apireference.dynabic.com/doc/resources/css/api-reference-ui.css -> api-reference-ui.css),这时保证CSS文件能够正常引用,但是用这些文件生成的chm文档仍然很大,并且有一些无用的按钮无法点击,然后我们需要把它们干掉。于是我写了一个java程序,进行操作,需要最新的程序或者有不理解的可以联系我:
package edu.jiangxin.tools;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import edu.jiangxin.common.FileFilterWrapper;
public class RemoveHtmlElement {
static final String charsetName = "UTF-8";
static final String[] divClassNames = { "Header", "aspNetHidden", "Search", "clearAll", "Header" };
static final String[] divIds = { "Header", "leftmenu" };
public static void main(String[] args) throws IOException {
ArrayList<File> files = new FileFilterWrapper().list("C:/asposebak", "htm");
for (File file : files) {
Document doc = Jsoup.parse(file, charsetName);
for (int i = 0; i < divClassNames.length; i++) {
Elements eles = doc.getElementsByClass(divClassNames[i]); // eles不可能为null
eles.remove();
}
for (int i = 0; i < divIds.length; i++) {
Element ele = doc.getElementById(divIds[i]);
if (ele != null) {
ele.remove();
}
}
Elements eles = doc.getElementsByTag("script");
for (int i = 0; i < eles.size(); i++) {
Element ele = eles.get(i);
if (ele.attr("language").equals("javascript") && ele.attr("type").equals("text/javascript")) {
ele.remove();
}
}
FileOutputStream fos = new FileOutputStream(file, false);
OutputStreamWriter osw = new OutputStreamWriter(fos, charsetName);
osw.write(doc.html());
osw.close();
System.out.println(file.getAbsolutePath());
}
}
}
通过程序删除之后基本解很清爽了,当然还需要使用notepad++进行一些简单的文本批量替换。
最后的工作就是使用easychm生成chm文档了,我用的是试用版,感觉只不过多了广告,生成的chm文档并不影响使用。
制作Aspose CHM文档的过程记录的更多相关文章
- QuickChm 制作chm文档 chm文档脚本错误,乱码
最近学习bootstrap,到网上找了一些chm格式的文档,发现有些老旧,于是决定自己制作一个 用过以下这些chm制造器,包括easychm,chm精灵,chmeditor,chmfactory等等, ...
- 生成chm文档工具- Sandcastle -摘自网络
Sandcastle是微软官方的文档生成工具,NDoc开发停止后,这个貌似也是唯一的一个这方面的工具.它从dll文件及其xml注释文件能够 生成完整的帮助文档,支持多种生成格式(Helpe1x:chm ...
- 作为一个程序猿,是不是经常会用到.chm文档,但是我们可能会遇到这样那样的问题,比如.chm文档打不开
.chm文档不能正常打开,一般有两种情形下会造成文档打不开, 1.系统语言栏的语言和文档的语言类别不一同,也就是说比如你的文档是中文版的,但是系统设置的语言是其他国家的.不过一般这种情况很少出现 ,谁 ...
- 利用Gulp实现JSDoc 3的文档编写过程中的实时解析和效果预览
### 利用Gulp实现JSDoc 3的文档编写过程中的实时解析和效果预览 http://segmentfault.com/a/1190000002583569
- Emacs阅读chm文档
.title { text-align: center; margin-bottom: .2em } .subtitle { text-align: center; font-size: medium ...
- 最简单,最实用的数据库CHM文档生成工具——DBCHM
DBCHM支持SqlServer/MySql/Oracle/PostgreSQL等数据库的表列批注维护管理. DBCHM有以下几个功能 表,列的批注可以编辑保存到数据库. 表,列的批注支持通过pdm文 ...
- 在Firefox中发现一个在Linux下查看chm文档的插件
在Firefox浏览器插件中搜索插件chmfox插件,安装后就可以在linux下通过Firefox浏览器阅读chm文档了.
- 如何生成项目的chm文档
如何生成项目的chm文档 2014-11-30 Generate .chm based documentation of your project using SandCastle tool
- IDEA生成doc文档-生成chm文档
首先,打开IDEA,并找到Tools -> Generate JavaDoc- 可供查询的chm比那些HTML页面好看多了. 如果您用过JDK API的chm文档,那么您一定不会拒绝接受其它第三 ...
随机推荐
- dubbo子模块
dubbo源码版本:2.5.4 经统计,dubbo一共有36个子模块,子模块如下: ---------------------------------------------------------- ...
- C语言第4天循环,流程控制。
C语言第四天 :first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } img { borde ...
- sql 集合运算
UNION 并运算 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 SE ...
- Shell脚本中的交互式命令处理
先贴代码: DATE=`date -d -1hour +%T` fileName=erver_`date -d now +%Y-%m-%d-%H%M%S`.txt cp /home/BLload_ba ...
- Quartz:ERROR threw an unhandled Exception
详细的错误信息如下: -- ::] ERROR org.quartz.core.JobRunShell: - Job group1.job1 threw an unhandled Exception: ...
- Linux TOP命令详解
先来看一下执行以后的结果: 各项数值的含义如下: 第一行是任务队列信息. :: 当前时间 up days,: 系统运行时间,格式为天,时:分 user 当前登录用户数 load average: 0. ...
- V-rep学习笔记:曲柄摇杆机构
在ADAMS中创建一个曲柄摇杆机构很方便,但是V-rep中建模就比较麻烦.下面将自己在V-rep中建立曲柄摇杆机构模型的过程记录下来(由于对V-rep不是很熟,可能会有一些错误,只能等以后发现了再改进 ...
- VPython—旋转坐标系
使用arrow( )创建三个坐标轴代表一个坐标系,其中X0-Y0-Z0为参考坐标系(固定不动),X-Y-Z为运动坐标系,这两个坐标系原点重合,运动坐标系可以绕参考坐标系或其自身旋转.在屏幕上输出一个转 ...
- [CF353C]Find Maximum(贪心)
题目链接:http://codeforces.com/contest/353/problem/C 题意:给你一串数字a[]和一个二进制串,要求找一个不超过m的二进制数,使得与对应a[]上的数字的乘积和 ...
- sencha touch之store
store相当于数据库的表,是模型实例的集合.(是不是可以看成结构体数组) 可以对模型实例进行新建.更新.读取.删除.排序和过滤等操作. 创建store 由于store是表,必须要有模型或者定义字段, ...