关于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)在线转换

DocAI-免费CAJ转PDF工具

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的工具还是挺有价值的。