Java实现Pdf转Html-pdf2htmlEX工具

本文使用系统CentOS 7

1、获取压缩包

点击下载pdf2htmlEX-0.14.6.tar.gz

2、解压

tar zxvf pdf2htmlEX-0.14.6.tar.gz

在这里插入图片描述

3、此时直接安装会有问题,需要先编译安装libfontforge

安装所以要的依赖程序
  sudo yum install automake unzip libtool  autoconf  pango-devel pangoxft-devel
  sudo yum install  cmake gcc gnu-getopt java-1.8.0-openjdk libpng-devel fontforge-devel cairo-devel poppler-devel libspiro-devel freetype-devel  poppler-data libjpeg-turbo-devel git make gcc-c++
wget https://github.com/coolwanglu/fontforge/archive/pdf2htmlEX.zip # 下载压缩包
unzip pdf2htmlEX.zip # 解压
cd fontforge-pdf2htmlEX/ # 移动到目录
./autogen.sh  # 执行脚本

在这里插入图片描述
出现以上提示表示成功
继续依次执行

./configure
 make

在这里插入图片描述
如果出现以上错误则修改解压出来的文件中的ufo.c文件 /fontforge-pdf2htmlEX/fontforge/ufo.c
文件中搜索 SplinePointListInterpretGlif 关键字
将方法内的参数改为 SplineFont *sf,char *filename,char *memory, int memlen, int em_size, int ascent,int stroked
如下图
在这里插入图片描述

 继续执行 
 make install

在这里插入图片描述
出现上图文件表示成功

4、回到pdf2htmlEX 目录继续安装

配置环境变量
echo 'export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig' >> /etc/profile  
执行安装
cmake .
sudo make
sudo make install

在这里插入图片描述

以下两条都执行 
export LD_LIBRARY_PATH=/usr/local/lib 
echo 'export LD_LIBRARY_PATH=/usr/local/lib' >> /etc/profile 
最后校验是否安装成功 
pdf2htmlEX -h

在这里插入图片描述
如上图表示成功

5、命令基础使用

具体参数说明在下面有
pdf2htmlEX --zoom 1.5  --dest-dir  [转换后文件保存的目录,不存在则创建]  [需要转换的文件]
eg: pdf2htmlEX --zoom 1.5  --dest-dir  /usr/local/pdf2html/temp/  /usr/local/pdf2html/temp/测试转换.pdf

在这里插入图片描述
转换中
在这里插入图片描述
转换成功

常用参数说明

  -f,--first-page <int>         需要转换的起始页 (默认: 1)  
  -l,--last-page <int>          需要转换的最后一页 (默认: 2147483647)  
  --zoom <fp>                   缩放比例  
  --fit-width <fp>              适合宽度 <fp> 像素  
  --fit-height <fp>             适合高度 <fp> 像素  
  --use-cropbox <int>           使用剪切框 (default: 1)  
  --hdpi <fp>                   图像水平分辨率 (default: 144)  
  --vdpi <fp>                   图像垂直分辨率 (default: 144)  
  --embed <string>              指定哪些元素应该被嵌入到输出  
  --embed-css <int>             将CSS文件嵌入到输出中 (default: 1)  
  --embed-font <int>            将字体文件嵌入到输出中 (default: 1)  
  --embed-image <int>           将图片文件嵌入到输出中 (default: 1)  
  --embed-javascript <int>      将javascript文件嵌入到输出中 (default: 1)  
  --embed-outline <int>         将链接嵌入到输出中 (default: 1)  
  --split-pages <int>           将页面分割为单独的文件 (default: 0)  
  --dest-dir <string>           指定目标目录 (default: ".")  
  --css-filename <string>       生成的css文件的文件名 (default: "")  
  --page-filename <string>      分割的网页名称  (default:"")  
  --outline-filename <string>   生成的链接文件名称 (default:"")  
  --process-nontext <int>       渲染图行,文字除外 (default: 1)  
  --process-outline <int>       在html中显示链接 (default: 1)  
  --printing <int>              支持打印 (default: 1)  
  --fallback <int>              在备用模式下输出 (default: 0)  
  --embed-external-font <int>   嵌入局部匹配的外部字体 (default: 1)  
  --font-format <string>        嵌入的字体文件后缀 (ttf,otf,woff,svg) (default: "woff")  
  --decompose-ligature <int>    分解连字-> fi (default:0)  
  --auto-hint <int>             使用fontforge的autohint上的字体时不提示 (default: 0)  
  --external-hint-tool <string> 字体外部提示工具 (overrides --auto-hint) (default: "")  
  --stretch-narrow-glyph <int>  伸展狭窄的字形,而不是填充 (default: 0)  
  --squeeze-wide-glyph <int>    收缩较宽的字形,而不是截断 (default: 1)  
  --override-fstype <int>       clear the fstype bits in TTF/OTF fonts (default:0)  
  --process-type3 <int>         convert Type 3 fonts for web (experimental) (default: 0)  
  --heps <fp>                   合并文本的水平临界值,单位:像素(default: 1)  
  --veps <fp>                   vertical threshold for merging text, in pixels (default: 1)  
  --space-threshold <fp>        断字临界值 (临界值 * em) (default:0.125)  
  --font-size-multiplier <fp>   一个大于1的值增加渲染精度 (default: 4)  
  --space-as-offset <int>       把空格字符作为偏移量 (default: 0)  
  --tounicode <int>             如何处理ToUnicode的CMap (0=auto, 1=force,-1=ignore) (default: 0)  
  --optimize-text <int>         尽量减少用于文本的HTML元素的数目 (default: 0)  
  --bg-format <string>          指定背景图像格式 (default: "png")  
  -o,--owner-password <string>  所有者密码 (为了加密文件)  
  -u,--user-password <string>   用户密码 (为了加密文件)  
  --no-drm <int>                覆盖文档的 DRM 设置 (default: 0)  
  --clean-tmp <int>             转换后删除临时文件 (default: 1)  
  --data-dir <string>           指定的数据目录 (default: ".\share\pdf2htmlEX")  
  --debug <int>                 打印调试信息 (default: 0)  
  -v,--version                  打印版权和版本信息  
  -h,--help                     打印使用帮助信息  

6、java调用方法

    public static String pdfTohtml(File pdfTempFile){
        String absolutePath = pdfTempFile.getAbsolutePath();
        //需要执行的指令
        String instruct = String.format("pdf2htmlEX --zoom 1.5  --dest-dir  %s  %s"
                ,absolutePath.replace(absolutePath.substring(absolutePath.lastIndexOf("/")),"")
                ,absolutePath);
        // 创建ProcessBuilder对象,并设置Shell脚本文件作为参数
        ProcessBuilder processBuilder = new ProcessBuilder("/bin/bash","-c", instruct);
        int exitCode = 0;
        try {
            // 启动Shell进程执行脚本
            Process process = processBuilder.start();
            // 等待命令执行完成
            exitCode = process.waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (exitCode==0){
            log.info("Pdf:{} 转换成功" ,absolutePath);
        }else {
            throw new BusinessException("pdf转换html失败");
        }
        //转化成功后返回文件路径
        return absolutePath.replace(FileUtil.extName(absolutePath), OfficeConstants.OFFICE_HTML);
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿木木AEcru

感谢您的阅读,赞赏请随意打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值