Java将djvu文件转成pdf

需求来源

迫于有部分资源是djvu格式的文件,需要预览这部分文件,web端无法直接预览djvu,所以需要将djvu转成pdf。

转换方法

简单来说就是先把djvu文件转换成tiff文件,再将tiff文件转换成pdf文件。

Ubuntu服务器

如果服务器是Ubuntu系统,那么有直接现成的方案;

方案来自于Ubuntu社区,亲测可用,地址:ubuntu How to convert djvu to pdf

  1. 安装依赖
bash 复制代码
sudo apt-get install okular-extra-backends;
sudo apt-get install evince;
sudo apt-get install libtiff-tools;
sudo apt-get install libevdocument1;
sudo apt-get install libevview;
sudo apt-get install djvulibre-bin;
sudo apt-get install libdjvulibre21;
  1. 转化文件

    ddjvu -format=tiff file_name.djvu file_name.tiff
    tiff2pdf -j -o file_name.pdf file_name.tiff

ile_name.djvu为需要转换的djvu文件,file_name.tiff为tiff文件名,file_name.pdf为最终的pdf文件名

Centos服务器

因为目前业务都是在Centos7上运行,因为这个需求要换成Ubuntu不现实,但是Centos7又没有找到现成的方案,但是都是Linux服务器嘛,应该都是互通的,所以就找了一下centos上相应的依赖来测试,也可以完成转换。

  1. 安装依赖

注意这里必须先要安装tiff依赖,再安装djvulibre。

bash 复制代码
sudo yum install ImageMagick;
sudo yum install evince;
sudo yum install gcc;
sudo yum install gcc-c++;

wget http://download.osgeo.org/libtiff/tiff-4.6.0rc2.tar.gz;
tar -zxvf tiff-4.6.0rc2.tar.gz;
cd tiff-4.6.0;
sudo ./configure;
sudo make;
sudo make install;

wget https://zenlayer.dl.sourceforge.net/project/djvu/DjVuLibre/3.5.28/djvulibre-3.5.28.tar.gz;
tar -zxvf djvulibre-3.5.28.tar.gz;
cd djvulibre-3.5.28;
sudo ./configure --disable-desktopfiles;
sudo make;
sudo make install;
  1. 转化文件

    ddjvu -format=tiff file_name.djvu file_name.tiff
    tiff2pdf -j -o file_name.pdf file_name.tiff

ile_name.djvu为需要转换的djvu文件,file_name.tiff为tiff文件名,file_name.pdf为最终的pdf文件名

Java调用

java 复制代码
public static void main(String[] args) {
    /**
     * 传入djvu和下载pdf文件的代码请自行搞定哈
     */
    try {
        ProcessBuilder processBuilder = new ProcessBuilder();
        processBuilder.command("sh", "-c", "ddjvu -format=tiff test.djvu test.tiff");
        Process process = processBuilder.start();
        int exitCode = process.waitFor();
        System.out.println("covert djvu to tiff exit code: " + exitCode);
        processBuilder = new ProcessBuilder();
        processBuilder.command("sh", "-c", "tiff2pdf -j -o test.pdf test.tiff");
        Process process = processBuilder.start();
        int exitCode = process.waitFor();
        System.out.println("covert tiff to pdf exit code: " + exitCode);
        File file = new File("test.pdf");
        System.out.println("pdf file covert result: " + file.exists());
    } catch (IOException | InterruptedException e) {
        e.printStackTrace();
    }
}

转换结果

转换问题

如果执行命令的时候,报 ddjvu tiff output not complied 错误,

请先安装好tiff依赖,再重新安装djvulibre;

其他系统安装djvulibre,也可以参照GitHub的指示进行

djvulibre地址:https://github.com/barak/djvulibre

相关推荐
霸道流氓气质3 分钟前
Java 单元测试生成大量 Excel 测试数据实战指南
java·单元测试·excel
io无心8 分钟前
基于Image 2的多配件商品图生成技术实现(已开源)
java·image2
l齐天10 分钟前
Ubuntu 中编译 Go + PBC 程序为 Windows 11 可运行文件
windows·ubuntu·golang
逢君学术论文AI写作11 分钟前
Java第22课:Servlet获取请求参数+POST请求+表单交互
java·servlet·ai写作
神明不懂浪漫11 分钟前
【第二章】Java中的数据类型,运算符与程序逻辑控制
java·开发语言·经验分享·笔记
小马爱打代码13 分钟前
Java 开发:过滤器(Filter)与拦截器(Interceptor)深度解析 + CORS 跨域完整解决方案
java
我登哥MVP15 分钟前
SpringCloud 核心组件解析:服务熔断和降级
java·spring boot·后端·spring·spring cloud·java-ee·maven
霸道流氓气质24 分钟前
Spring AI Alibaba Graph 全解析:从入门到精通
java·人工智能·spring
摇滚侠25 分钟前
SpringMVC 入门到实战 异常处理 83-85
java·后端·spring·maven·intellij-idea
Solis程序员32 分钟前
长会话状态治理(上):问题分析、存储分层与恢复机制
java