关于caj
CAJ(China Academic Journal)文件格式是中国知网(CNKI)广泛使用的一种文档格式,主要用于存储学术期刊文章。
常规阅读软件无法直接打开CAJ文件。因为CAJ文件是知网特有的文件格式,需要使用专门的阅读工具——CAJ全文浏览器(CAJViewer)来进行查看和阅读。
CAJViewer只能将caj文件另存为txt,显然不是很方便。
caj文件结构
1、caj的文件结构,复用了pdf文件的子结构(pdf body)。caj 转 pdf,可以基本不失真地实现。
2、从如下位置,可以从caj文件中到 pdf 数据子结构
(1)读偏移量 0x14 处的 int 值 ,为地址指针 ptr_addr
(2)从 ptr_addr 地址处,读取内容 pdf body
caj转pdf的过程
caj文件沿用pdf的数据结构,在文件不被破坏的情况下,可以无损转换为pdf格式。
转换过程主要有这几个步骤:
(1)添加 PDF 文件头
(2)在 PDF Body 中查找所有 /Parent 字段,找到最小值,即为根 Pages 字典的对象编号
(3)添加Pages ,在 PDF Body 中查找所有 /Parent 字段值为根 Pages 字典的对象,将该对象的编号依次添加到 kids[]
(4)添加文件结束标记
(5)生成交叉引用表和文件尾
(6)添加大纲项目
CAJ 转换工具
当然,为了将caj转化为pdf格式,有很多工具可以使用。以下为使用工具将caj转换为pdf的一些例子。
1)CAJViewer 打印为pdf
CAJViewer虽然只能另存为txt文件,但是可以通过打印,将文件打印成pdf格式的文件。
这种方式实际用起来也挺麻烦。
2)github开源工具
中国知网学位论文仅提供 CAJ 格式下载,只能使用CAJViewer 打开,文献阅读很不方便(尤其是在非 Windows 系统上)。
使用 CAJViewer 的打印功能,得到的 PDF 文件的内容为图片,无法进行文字的选择,且原文献的大纲列表也会丢失。
这个github项目可以解决这两个问题。不过这个项目使用起来有一定门槛。对纯粹用于文献阅读的同学,使用起来有一些挑战。
https://github.com/caj2pdf/caj2pdf
3)单机工具
一些PDF编辑器,可以打开caj文件。
4)CALIBRE
Calibre支持广泛的电子书格式。CAJ转PDF不是Calibre原生支持的功能,但通过添加插件或将CAJ文件先转换为其他Calibre支持的格式,再转为PDF,可以有效解决问题。
5)在线转换
6)使用java打开caj文件
public void parseCajContent(String content) {
String header = content.substring(0, 100);
int start = content.indexOf("CatalogStart");
int end = content.indexOf("CatalogEnd");
String catalog = content.substring(start, end);
processCajCatalog(catalog);
}private void processCajCatalog(String catalog) {
String[] entries = catalog.split(";"); // 假设目录条目以分号分隔
for (String entry : entries) {
Log.d("CatalogEntry", entry);
}
}
总结来说,caj 作为学术领域的一种重要的文件格式,有丰富的学术资源可供研究。了解caj转pdf的工具还是挺有价值的。