pdf2html java_pdf2HtmlEX的使用
项目使用背景
内部使用的文件管理系统,实现doc,docx文件的在线预览功能;整体功能类似于知网的功能缩减版:文件的管理,在线预览,查重功能。其中还使用到pdf2htmlEX实现pdf转html,最终实现文章重复部分标红操作。
-- 同OpenOffice4使用篇
优点:
格式完美转换,样式一模一样,解析的html标签还算工整。
缺点:
Linux安装太麻烦了(但是我用docker,一切环境都不是事儿)
格式和html标签没法自定义,html的后续操作难度加大
插件的安装方法
查看作者GitHub里面有最原始的方法,也是最好的。
linux安装起来比较的麻烦,每个版本的系统可能都不一样,有些没办法装上。
最简单的方法就是使用安装好的docker镜像,把自己的开发环境集成上去就ok了。
2019329-195816.jpg
docker search pdf2htmlEX
找了个熟悉系统的版本,centos。项目打包上句就ok了
插件使用方法
插件是以调用命令执行的,所以只要能掉命令就行
java采用 Runtime.getRuntime() 来运行
以下是java代码示例
import org.apache.commons.lang3.StringUtils;
import java.io.File;
/**
* pdf转html工具类
*
* @author 1nchaos
* @date 2019/3/7 13:20
*/
public class Pdf2HtmlUtil {
/**
* 调用pdf2htmlEX将pdf文件转换为html文件
*
* @param exeFilePath pdf2htmlEX.exe文件路径
* @param pdfFile pdf文件绝对路径
* @param destDir 生成的html文件存放路径
* @param htmlFileName 生成的html文件名称
* @return
*/
public static boolean pdf2html(String exeFilePath, String pdfFile, String htmlFileName) {
if (StringUtils.isBlank(exeFilePath) && StringUtils.isBlank(pdfFile)
&& StringUtils.isBlank(htmlFileName)) {
System.out.println("传递的参数有误!");
return false;
}
Runtime rt = Runtime.getRuntime();
StringBuilder command = new StringBuilder();
command.append(exeFilePath).append(" ");
// 生成文件存放位置,需要替换文件路径中的空格
// if (destDir != null && !"".equals(destDir.trim())) {
// command.append("--dest-dir ").append(destDir.replace(" ", "\" \"")).append(" ");
// }
// 尽量减少用于文本的HTML元素的数目 (default: 0)
command.append("--optimize-text 1 ");
command.append("--zoom 1.4 ");
// html中显示链接:0——false,1——true
command.append("--process-outline 0 ");
// 嵌入html中的字体后缀(default ttf)
command.append("--font-format woff ");
// ttf,otf,woff,svg 需要替换文件路径中的空格
command.append(pdfFile.replace(" ", "")).append(" ");
if (!"".equals(htmlFileName.trim())) {
command.append(htmlFileName.replaceAll(" ", ""));
if (!htmlFileName.contains(".html")) {
command.append(".html");
}
}
if (streamPrintInfo(rt, command)) return true;
return false;
}
/**
* 调用pdf2htmlEX将pdf文件转换为html文件
*
* @param exeFilePath pdf2htmlEX.exe文件路径
* @param pdfFile pdf文件绝对路径
* @param destDir 生成的html文件存放路径
* @param htmlFileName 生成的html文件名称
* @return
*/
public static boolean pdf2html(String exeFilePath, String pdfFile, String htmlFileName, String destDir) {
if (StringUtils.isBlank(exeFilePath) && StringUtils.isBlank(pdfFile)
&& StringUtils.isBlank(htmlFileName)) {
System.out.println("传递的参数有误!");
return false;
}
Runtime rt = Runtime.getRuntime();
StringBuilder command = new StringBuilder();
command.append(exeFilePath).append(" ");
// 生成文件存放位置,需要替换文件路径中的空格
if (destDir != null && !"".equals(destDir.trim())) {
command.append("--dest-dir ").append(destDir.replace(" ", "\" \"")).append(" ");
}
// 尽量减少用于文本的HTML元素的数目 (default: 0)
command.append("--optimize-text 1 ");
command.append("--zoom 1.4 ");
// html中显示链接:0——false,1——true
command.append("--process-outline 0 ");
// 嵌入html中的字体后缀(default ttf)
command.append("--font-format woff ");
// ttf,otf,woff,svg 需要替换文件路径中的空格
command.append(pdfFile.replace(" ", "\" \"")).append(" ");
if (!"".equals(htmlFileName.trim())) {
command.append(htmlFileName);
if (!htmlFileName.contains(".html")) {
command.append(".html");
}
}
if (streamPrintInfo(rt, command)) return true;
return false;
}
/**
* @param pdfFile
* @param destDir 生成的html文件存放路径
* @return
*/
public static boolean pdf2htmlLinux(String pdfFile, String destDir) {
if (StringUtils.isBlank(pdfFile) && StringUtils.isBlank(destDir)) {
System.out.println("传递的参数有误!");
return false;
}
Runtime rt = Runtime.getRuntime();
StringBuilder command = new StringBuilder();
command.append("pdf2htmlEX").append(" ");
// 尽量减少用于文本的HTML元素的数目 (default: 0)
command.append("--optimize-text 1 ");
command.append("--zoom 1.4 ");
// html中显示链接:0——false,1——true
command.append("--process-outline 0 ");
// 嵌入html中的字体后缀(default ttf)
command.append("--font-format woff ");
// ttf,otf,woff,svg 需要替换文件路径中的空格
command.append(pdfFile.replace(" ", "\" \"")).append(" ");
// 生成文件存放位置,需要替换文件路径中的空格
if (destDir != null && !"".equals(destDir.trim())) {
command.append("--dest-dir ").append(destDir.replace(" ", "\" \"")).append(" ");
}
return streamPrintInfo(rt, command);
}
public static boolean pdf2htmlLinux(String pdfFile, String htmlFileName, String destDir) {
if (StringUtils.isBlank(pdfFile) && StringUtils.isBlank(htmlFileName)) {
System.out.println("传递的参数有误!");
return false;
}
Runtime rt = Runtime.getRuntime();
StringBuilder command = new StringBuilder();
command.append("pdf2htmlEX").append(" ");
// 生成文件存放位置,需要替换文件路径中的空格
if (destDir != null && !"".equals(destDir.trim()))
command.append("--dest-dir ").append(destDir.replace(" ", "\" \"")).append(" ");
// 尽量减少用于文本的HTML元素的数目 (default: 0)
command.append("--optimize-text 1 ");
command.append("--zoom 1.4 ");
// html中显示链接:0——false,1——true
command.append("--process-outline 0 ");
// 嵌入html中的字体后缀(default ttf)
command.append("--font-format woff ");
// ttf,otf,woff,svg 需要替换文件路径中的空格
command.append(pdfFile.replace(" ", "\" \"")).append(" ");
if (!"".equals(htmlFileName.trim())) {
command.append(htmlFileName);
if (!htmlFileName.contains(".html")) {
command.append(".html");
}
}
if (streamPrintInfo(rt, command)) return true;
return false;
}
private static boolean streamPrintInfo(Runtime rt, StringBuilder command) {
try {
System.out.println("Command:" + command.toString());
Process p = rt.exec(command.toString());
StreamGobbler errorGobbler = new StreamGobbler(p.getErrorStream(), "ERROR");
// 开启屏幕标准错误流
errorGobbler.start();
StreamGobbler outGobbler = new StreamGobbler(p.getInputStream(), "STDOUT");
// 开启屏幕标准输出流
outGobbler.start();
int w = p.waitFor();
int v = p.exitValue();
if (w == 0 && v == 0) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
}
以下是命令参数
用法: pdf2htmlEX [options] []
-f,--first-page 需要转换的起始页 (默认: 1)
-l,--last-page 需要转换的最后一页 (默认: 2147483647)
--zoom 缩放比例
--fit-width 适合宽度 像素
--fit-height 适合高度 像素
--use-cropbox 使用剪切框 (default: 1)
--hdpi 图像水平分辨率 (default: 144)
--vdpi 图像垂直分辨率 (default: 144)
--embed 指定哪些元素应该被嵌入到输出
--embed-css 将CSS文件嵌入到输出中 (default: 1)
--embed-font 将字体文件嵌入到输出中 (default: 1)
--embed-image 将图片文件嵌入到输出中 (default: 1)
--embed-javascript 将javascript文件嵌入到输出中 (default: 1)
--embed-outline 将链接嵌入到输出中 (default: 1)
--split-pages 将页面分割为单独的文件 (default: 0)
--dest-dir 指定目标目录 (default: ".")
--css-filename 生成的css文件的文件名 (default: "")
--page-filename 分割的网页名称 (default:"")
--outline-filename 生成的链接文件名称 (default:"")
--process-nontext 渲染图行,文字除外 (default: 1)
--process-outline 在html中显示链接 (default: 1)
--printing 支持打印 (default: 1)
--fallback 在备用模式下输出 (default: 0)
--embed-external-font 嵌入局部匹配的外部字体 (default: 1)
--font-format 嵌入的字体文件后缀 (ttf,otf,woff,svg) (default: "woff")
--decompose-ligature 分解连字-> fi (default:0)
--auto-hint 使用fontforge的autohint上的字体时不提示 (default: 0)
--external-hint-tool 字体外部提示工具 (overrides --auto-hint) (default: "")
--stretch-narrow-glyph 伸展狭窄的字形,而不是填充 (default: 0)
--squeeze-wide-glyph 收缩较宽的字形,而不是截断 (default: 1)
--override-fstype clear the fstype bits in TTF/OTF fonts (default:0)
--process-type3 convert Type 3 fonts for web (experimental) (default: 0)
--heps 合并文本的水平临界值,单位:像素(default: 1)
--veps vertical threshold for merging text, in pixels (default: 1)
--space-threshold 断字临界值 (临界值 * em) (default:0.125)
--font-size-multiplier 一个大于1的值增加渲染精度 (default: 4)
--space-as-offset 把空格字符作为偏移量 (default: 0)
--tounicode 如何处理ToUnicode的CMap (0=auto, 1=force,-1=ignore) (default: 0)
--optimize-text 尽量减少用于文本的HTML元素的数目 (default: 0)
--bg-format 指定背景图像格式 (default: "png")
-o,--owner-password 所有者密码 (为了加密文件)
-u,--user-password 用户密码 (为了加密文件)
--no-drm 覆盖文档的 DRM 设置 (default: 0)
--clean-tmp 转换后删除临时文件 (default: 1)
--data-dir 指定的数据目录 (default: ".\share\pdf2htmlEX")
--debug 打印调试信息 (default: 0)
-v,--version 打印版权和版本信息
-h,--help 打印使用帮助信息
最后感谢作者带来这么好的插件!!!完美转换
pdf2html java_pdf2HtmlEX的使用相关推荐
- html无损转换pdf,Pdf2html :高保真PDF至HTML转换
高保真PDF至HTML转换 pdf2htmlEX介绍 传统pdf2html有两种: 一种相当于pdf2text加一些比较弱的格式,基本跟pdf2text也差不了多少 另一种是把所有渲染成图片然后嵌到一 ...
- php调用pdf2html,php html2pdf
* 安装composer 运行html2pdf时,readme里面建议按照composer-setup.exe 安装过程中出现openssl的问题,在php.ini中开启相应extension即可, ...
- windows系统下的 pdf2html (pdf 转html)开源工具 pdf2htmlEX 使用方法
pdf2htmlEX windows系统可执行版下载地址: http://soft.rubypdf.com/software/pdf2htmlex-windows-version 使用方法: 将需要转 ...
- c执行cmd pdf2swf_pdf2swf 和pdf2html 使用命令详解
pdf2swf 将pdf文档转换为flash方式阅读,可以满足公式.图片的格式定义: pdf2htmlEX 将pdf文档转换为html方式阅读,有一下优点: 在HTML文件中精确显示原生文本 保持PD ...
- php word excel转pdf文件怎么打开,php office文件(word/excel/ppt)转pdf文件,pptpdf
php office文件(word/excel/ppt)转pdf文件,pptpdf 把代码放到了github上,点击进入 前阶段有个项目用到了线上预览功能, 关于预览office文件实现核心就是,把o ...
- 修改Docker容器字符编码为-zh_CN.UTF-8中文字符集
版本记录 2019.4.26日 第一版 问题描述 公司的java项目中使用了openoffice和pdf2html对文件进行格式转换,word,ppt,pdf文件都转换没有问题,唯独excel转换后显 ...
- python写表格_python写入表格
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! import xlwt #导入xlwt 库 book =xlwt.workboo ...
- WEB在线预览PDF
这是我在博客园发表的第一篇文章.以后会陆续把在线预览其他格式文档的解决方案发表出来. 解决思路:把pdf转换成html显示. 在线预览pdf我暂时了解3种解决方案,欢迎大家补充. 方案一: 利用pdf ...
- java-pdf转word,java开发面试笔试题
我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索hairyang001加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各 ...
最新文章
- javascript语法糖_语法糖和JavaScript糖尿病
- 清华硕士爆料:这些才是机器学习必备的数学基础
- ansible1.7.2源码安装教程
- iOS之深入解析类加载的底层原理:分类如何加载到类以及分类和类的配合使用
- mysql网页化_页面化操作数据库
- git 删除远程分支和本地分支
- android 自动挂断,[转]android 来电自动接听和自动挂断
- 2019下半年系统集成项目管理工程师上午真题
- 做空指控不成立 百度收购YY直播已基本完成
- 【软件项目管理】需求规格说明可以包括系统的运行环境
- Asp.Net IIS 管理类(全)
- 在Linux操作系统中,下载并安装软件
- shiro+springMVC整合文档及Demo
- deepin photoshop_Linux/Deepin 系统简单安装 Photoshop CS6 教程,附安装包
- JAVA反射机制Reflection详解
- linux无法解析域名
- Ubuntu 18.04 LTS 桌面版 WPS 安装字体
- 洛谷P5149 会议座位
- Win2008安装11g报错:orandce11.dll.dbl and orancds11.dll.dbl 文件找不到
- THE FOOL 【找规律】
热门文章
- 互联网“香饽饽”?数据挖掘或成热门行业
- LuceneElasticSeach
- VS2015 解决 “有太多的错误导致IntelliSense引擎无法正常工作,其中有些错误无法在编辑其中查看”问题
- 3DMax软件有什么方法调节摄像机
- 2021-05-29当微商怎么引流?微商如何利用闲鱼引流?
- 微软媒体服务器,Azure 媒体服务概述
- monkey自动化测试脚本
- 无状态编程, lambda 表达式中传入的局部变量,为什么需要是不可变的(final)
- 入行游戏建模,做场景建模师必备软件有哪些?有无发展前景
- uml的用例图中扩展关系与包含关系