中国知网的某些文献(多为学位论文)仅提供其专有的 CAJ 格式下载,仅能使用知网提供的软件(如 CAJViewer 等)打开,给文献的阅读和管理带来了不便(尤其是在非 Windows 系统上)。

若要将 CAJ 文件转换为 PDF 文件,可以使用 CAJViewer 的打印功能。但这样得到的 PDF 文件的内容为图片,无法进行文字的选择,且原文献的大纲列表也会丢失。

caj2pdf 开发目的是可以解决上述两问题。

起因是 2017 年写毕业论文时深受垃圾 caj 格式之苦,于是利用毕业后的暑假分析了一下知网 caj 格式的文件结构,初步实现了将 caj
文件转换为 PDF 文档(文字格式,非图片打印,且包含完整的目录大纲结构)。

这个项目最初只能转换部分 caj 文件,随着逐步完善,能成功转换的范围越来越广,尤其是去年底 GitHub 用户 HinTak
加入开发后,对某种特定格式的 caj 文件转换取得了重大进展,现在应该能转换大部分的文件了。

环境和依赖

  • Python 3.3+
  • PyPDF2
  • mutool
    除了Microsoft Windows:我们提供Microsoft Windows 32-bit/64-bit DLLs,HN 格式需要
  • C/C++编译器
  • libpoppler开发包,或libjbig2dec开发包。

用法

# 打印文件基本信息(文件类型、页面数、大纲项目数)
caj2pdf show [input_file]

# 转换文件
caj2pdf convert [input_file] -o/--output [output_file]

# 从 CAJ 文件中提取大纲信息并添加至 PDF 文件
## 遇到不支持的文件类型或 Bug 时,可用 CAJViewer 打印 PDF 文件,并用这条命令为其添加大纲
caj2pdf outlines [input_file] -o/--output [pdf_file]

caj2pdf show test.caj
caj2pdf convert test.caj -o output.pdf
caj2pdf outlines test.caj -o printed.pdf