caj转pdf
caj转pdf
CAJ文件中国知网下载论文的一种.caj为后缀的文件,想要打开这种文件就必须下载知网的‘全球学术快报’或者CAJViewer软件。想要打开caj非常的麻烦。
caj2pdf是[github](https://link.zhihu.com/?target=https%3A//github.com/caj2pdf/caj2pdf)上的一个有1.7k star项目,是由github用户caj2pdf发布的,遵守GLWT开源许可的开源软件。项目地址:[https://github.com/caj2pdf/caj2pdf]()
本教程使用centos服务器。使用java操作caj转pdf(附代码)
一、代码获取
打开Github上caj2pdf网页,下载源代码文件caj2pdf.zip(通过git clone或者直接下载zip包)
2.解决依赖,caj2pdf至少需要3个依赖
1.查看python版本,如果版本低于3.3,可跳转另一篇文章 http://www.123ou.top/blog/8
[root@xxx Python-3.6.8]# python3 -V
Python 3.6.8
2.安装PyPDF2
sudo pip3 install PyPDF2
3.安装mutool
cd /usr/local #可自行选中安装目录
wget https://mupdf.com/downloads/archive/mupdf-1.20.3-source.tar.gz
tar -zxvf mupdf-1.20.3-source.tar.gz
cd mupdf-1.20.3-source
make
make install
安装编译mutool 报错 及解决方案见文章末尾
3.准备好环境,将下载的caj2pdf通过ftp上传到服务器。我是放在/usr/local目录下,可自行选中解压目录
cd /usr/local/caj2pdf/
ll
查看文件是否有执行(x)权限,没有权限的话执行以下
chmod +x caj2pdf
chmod +x jbi*
再次查看文件权限
创建软连接
ln -s /usr/local/caj2pdf/caj2pdf /usr/bin/
用法
# 打印文件基本信息(文件类型、页面数、大纲项目数)
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
4.java代码示例
/**
* @param fileUrl caj文件存放路径 (/usr/local/caj2pdf/test.caj)
* @param outPath 输出文件位置 (/mydata/file/test.pdf)
*/
public static String caj2pdf(String fileUrl, String outPath) {
try {
Runtime rt = Runtime.getRuntime();
Long startTime = System.currentTimeMillis();
String commands ="caj2pdf convert " + fileUrl + " -o " + outPath;
System.out.println("开始执行caj2pdf,------->" + commands);
Process p = rt.exec(commands);
//等待执行完成
p.waitFor();
Long endTime = System.currentTimeMillis();
System.out.println("执行完毕,耗时" + (endTime - startTime) + "ms");
return "执行完毕,耗时" + (endTime - startTime) + "ms";
} catch (Exception var8) {
var8.printStackTrace();
return "执行失败,error(" + var8.getMessage() + ")";
}
}
编译mupdf可能出现错误
1.1报错
无法验证 mupdf.com 的由 “/C=US/O=Let’s Encrypt/CN=R3” 颁发的证书
解决方案
yum install -y ca-certificates
2.1报错
g++: 错误:unrecognized command line option ‘-std=c++17’
make: *** [build/release/source/fitz/tessocr.o] 错误 1
出现这个编译错误的原因在g++ gcc 版本过低不支持C++17
解决办法 使用centos-release-scl安装高版本gcc参考连接
$sudo yum install gcc -y #默认安装旧版本4.85
$sudo yum -y install centos-release-scl #安装centos-release-scl
$sudo yum list all --enablerepo='centos-sclo-rh' #列出scl有哪些源可以使用
$sudo yum list all --enablerepo='centos-sclo-rh'|grep gcc # 查看scl中gcc版本
devtoolset-10-gcc.x86_64 10.2.1-11.2.el7 centos-sclo-rh
devtoolset-10-gcc-c++.x86_64 10.2.1-11.2.el7 centos-sclo-rh
devtoolset-10-gcc-gdb-plugin.x86_64 10.2.1-11.2.el7 centos-sclo-rh
devtoolset-10-gcc-gfortran.x86_64 10.2.1-11.2.el7 centos-sclo-rh
devtoolset-10-gcc-plugin-devel.x86_64 10.2.1-11.2.el7 centos-sclo-rh
devtoolset-10-libgccjit.x86_64 10.2.1-11.2.el7 centos-sclo-rh
devtoolset-10-libgccjit-devel.x86_64 10.2.1-11.2.el7 centos-sclo-rh
devtoolset-10-libgccjit-docs.x86_64 10.2.1-11.2.el7 centos-sclo-rh
devtoolset-11-annobin-plugin-gcc.x86_64 9.82-1.el7.1 centos-sclo-rh
devtoolset-11-gcc.x86_64 11.2.1-1.2.el7 centos-sclo-rh
devtoolset-11-gcc-c++.x86_64 11.2.1-1.2.el7 centos-sclo-rh
devtoolset-11-gcc-gdb-plugin.x86_64 11.2.1-1.2.el7 centos-sclo-rh
devtoolset-11-gcc-gfortran.x86_64 11.2.1-1.2.el7 centos-sclo-rh
devtoolset-11-gcc-plugin-devel.x86_64 11.2.1-1.2.el7 centos-sclo-rh
devtoolset-11-libgccjit.x86_64 11.2.1-1.2.el7 centos-sclo-rh
devtoolset-11-libgccjit-devel.x86_64 11.2.1-1.2.el7 centos-sclo-rh
devtoolset-11-libgccjit-docs.x86_64 11.2.1-1.2.el7 centos-sclo-rh
$sudo yum -y install devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils #安装新版本
$scl enable devtoolset-11 bash #临时切换,退出服务器恢复
$echo "source /opt/rh/devtoolset-11/enable" >>/etc/profile #永久切换
2.2报错
In file included from thirdparty/freeglut/include/GL/freeglut.h:17,
from platform/gl/gl-app.h:36,
from platform/gl/gl-annotate.c:23:
thirdparty/freeglut/include/GL/freeglut_std.h:143:13: fatal error: GL/gl.h: 没有那个文件或目录
143 | # include <GL/gl.h>
| ^~~~~~~~~
compilation terminated.
make: *** [build/release/platform/gl/gl-annotate.o] 错误 1
错误原因:系统里面缺少OpenGl库
解决方案, 配置OpenGL开发环境(也可以只安装opengl库)
sudo yum list mesa* #三维计算机图形库,以开源形式实现了OpenGL的应用程序接口。
sudo yum install -y mesa*
sudo yum install -y freeglut*
sudo yum install -y *glew*
2.3报错
In file included from thirdparty/freeglut/src/fg_internal.h:192,
from thirdparty/freeglut/src/fg_callbacks.c:29:
thirdparty/freeglut/src/x11/fg_internal_x11.h:42:10: fatal error: X11/extensions/XInput.h: 没有那个文件或目录
42 | #include <X11/extensions/XInput.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [build/release/thirdparty/freeglut/src/fg_callbacks.o] 错误 1
解决方案
$sudo yum install -y libXi-devel.x86_64
2.4报错
In file included from thirdparty/freeglut/src/fg_internal.h:192,
from thirdparty/freeglut/src/fg_callbacks.c:29:
thirdparty/freeglut/src/x11/fg_internal_x11.h:47:14: fatal error: X11/extensions/Xrandr.h: 没有那个文件或目录
47 | # include <X11/extensions/Xrandr.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [build/release/thirdparty/freeglut/src/fg_callbacks.o] 错误 1
解决方案
$sudo yum install -y libXrandr-devel.x86_64