Go to file
HinTak 6c4bc32b15
Update README.md
Reference extra libs build.
2024-01-09 21:51:13 +00:00
.github/ISSUE_TEMPLATE Update bug_cn.md 2022-01-21 10:31:12 +08:00
lib Project structure & windows dll path fix. 2021-04-16 00:42:24 +08:00
.gitignore Project structure & windows dll path fix. 2021-04-16 00:42:24 +08:00
HNParsePage.py More band-aiding to cover up flaws in buggy parsing. 2022-07-04 06:05:48 +01:00
LICENSE Update LICENSE. 2019-05-05 10:15:02 +08:00
README.md Update README.md 2024-01-09 21:51:13 +00:00
caj2pdf try s/caj/pdf/, then remove extension, then simply append ".pdf" for conversion 2021-02-26 21:49:30 +00:00
cajparser.py Better diagnostic for issue 65, text-only caj with single figures 2022-07-06 07:14:10 +01:00
jbig2dec.py Fix undefined variable. 2022-07-04 02:23:54 +01:00
jbigdec.py Project structure & windows dll path fix. 2021-04-16 00:42:24 +08:00
pdfwutils.py Receive info for 8-bit grey jpeg secondary images correctly 2022-07-04 05:19:08 +01:00
requirements.txt Comments about (partial) support of earlier python components 2022-07-02 01:16:37 +01:00
utils.py PyPDF2 3.x deprecation fix 2023-01-29 23:59:51 +08:00

README.md

caj2pdf

Why

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

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

How far we've come

知网下载到的后缀为 caj 的文件内部结构其实分为两类CAJ 格式和 HN 格式(受考察样本所限可能还有更多)。目前本项目支持 CAJ 格式文件的转换HN 格式的转换未完善并且需要建立两个新的共享库除了Microsoft Windows我们提供Microsoft Windows 32-bit/64-bit DLLs, Mac OS users can download from extra libs build, and chmod +x ...),详情如下:

cc -Wall -fPIC --shared -o libjbigdec.so jbigdec.cc JBigDecode.cc
cc -Wall `pkg-config --cflags poppler` -fPIC -shared -o libjbig2codec.so decode_jbig2data.cc `pkg-config --libs poppler`

抑或和libpoppler 相比还是取决于您是否更喜欢libjbig2dec一点可以替换libpoppler

cc -Wall -fPIC --shared -o libjbigdec.so jbigdec.cc JBigDecode.cc
cc -Wall `pkg-config --cflags jbig2dec` -fPIC -shared -o libjbig2codec.so decode_jbig2data_x.cc `pkg-config --libs jbig2dec`

关于两种格式文件结构的分析进展和本项目的实现细节,请查阅项目 Wiki

How to contribute

受测试样本数量所限,即使转换 CAJ 格式的文件也可能(或者说几乎一定)存在 Bug。如遇到这种情况欢迎在 Issue 中提出,并提供可重现 Bug 的 caj 文件——可以将样本文件上传到网盘等处,也可直接提供知网链接(作者已滚出校园网,提 issue 请提供可下载的 caj 文件)。

如果你对二进制文件分析、图像/文字压缩算法、逆向工程等领域中的一个或几个有所了解,欢迎帮助完善此项目。你可以从阅读项目 Wiki 开始,看看是否有可以发挥你特长的地方。Pull requests are always welcome.

How to use

环境和依赖

除了Microsoft Windows我们提供Microsoft Windows 32-bit/64-bit DLLsHN 格式需要

  • 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

异常输出IMPORTANT!!!

尽管这个项目目前有不少同学关注到了,但它仍然只支持部分 caj 文件的转换,必须承认这完全不是一个对普通用户足够友好的成熟项目。具体支持哪些不支持哪些,在前文也已经说了,但似乎很多同学并没有注意到。所以如果你遇到以下两种输出,本项目目前无法帮助到你。与此相关的 issue 不再回复。

  • Unknown file type.:未知文件类型;

License

本项目基于 GLWTPL (Good Luck With That Public License) 许可证开源。