pdf转换html java,使用JAVA怎么将PDF转换为HTML文档
使用JAVA怎么将PDF转换为HTML文档
发布时间:2021-05-25 18:26:18
来源:亿速云
阅读:85
作者:Leah
使用JAVA怎么将PDF转换为HTML文档?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
引入Maven依赖
org.apache.pdfbox
pdfbox
2.0.12
工具实现类package com.frame.utils;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
public class PdfConvertHtmlUtil {
/**
* 日志对象
*/
private static Logger logger = LoggerFactory.getLogger(PdfConvertHtmlUtil.class);
/**
* PDF文档流转Png
* @param pdfFileInputStream
* @return BufferedImage
*/
public static BufferedImage pdfStreamToPng(InputStream pdfFileInputStream){
PDDocument doc = null;
PDFRenderer renderer = null;
try {
doc = PDDocument.load(pdfFileInputStream);
renderer = new PDFRenderer(doc);
int pageCount = doc.getNumberOfPages();
BufferedImage image = null;
for (int i = 0; i
if (image != null) {
image = combineBufferedImages(image, renderer.renderImageWithDPI(i, 144));
}
if (i == 0) {
image = renderer.renderImageWithDPI(i, 144); // Windows native DPI
}
// BufferedImage srcImage = resize(image, 240, 240);//产生缩略图
}
return combineBufferedImages(image);
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(doc != null){doc.close();}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
*BufferedImage拼接处理,添加分割线
* @param images
* @return BufferedImage
*/
public static BufferedImage combineBufferedImages(BufferedImage... images) {
int height = 0;
int width = 0;
for (BufferedImage image : images) {
//height += Math.max(height, image.getHeight());
height += image.getHeight();
width = image.getWidth();
}
BufferedImage combo = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = combo.createGraphics();
int x = 0;
int y = 0;
for (BufferedImage image : images) {
//int y = (height - image.getHeight()) / 2;
g2.setStroke(new BasicStroke(2.0f));// 线条粗细
g2.setColor(new Color(193, 193, 193));// 线条颜色
g2.drawLine(x, y, width, y);// 线条起点及终点位置
g2.drawImage(image, x, y, null);
//x += image.getWidth();
y += image.getHeight();
}
return combo;
}
/**
* 通过Base64创建HTML文件并输出html文件
* @param base64
* @param htmlPath html保存路径
*/
public static void createHtmlByBase64(String base64,String htmlPath) {
StringBuilder stringHtml = new StringBuilder();
PrintStream printStream = null;
try {
// 打开文件
printStream = new PrintStream(new FileOutputStream(htmlPath));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 输入HTML文件内容
stringHtml.append("
");
stringHtml.append("");
stringHtml.append("
");
stringHtml.append("");
stringHtml.append(
"
");
stringHtml.append("");
stringHtml.append("");
//添加锚点用于返回首页
stringHtml.append("回到首页");
stringHtml.append("");
try {
// 将HTML文件内容写入文件中
printStream.println(stringHtml.toString());
} catch (Exception e) {
e.printStackTrace();
}finally {
if(printStream != null){printStream.close();}
}
}
/**
* bufferedImage 转为 base64编码
* @param bufferedImage
* @return
*/
public static String bufferedImageToBase64(BufferedImage bufferedImage) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
String png_base64 = "";
try {
ImageIO.write(bufferedImage, "png", byteArrayOutputStream);// 写入流中
byte[] bytes = byteArrayOutputStream.toByteArray();// 转换成字节
BASE64Encoder encoder = new BASE64Encoder();
// 转换成base64串 删除 \r\n
png_base64 = encoder.encodeBuffer(bytes).trim()
.replaceAll("\n", "")
.replaceAll("\r", "");
} catch (IOException e) {
e.printStackTrace();
}
return png_base64;
}
}
测试Demopublic static void main(String[] args) {
File file = new File("F:\\111\\Files\\MySQL查询语句大全集锦(经典珍藏).pdf");
String htmlPath = "F:\\111\\Files\\MySQL查询语句大全集锦(经典珍藏).html";
InputStream inputStream = null;
BufferedImage bufferedImage = null;
try {
inputStream = new FileInputStream(file);
bufferedImage = pdfStreamToPng(inputStream);
String base64_png = bufferedImageToBase64(bufferedImage);
createHtmlByBase64(base64_png,htmlPath);
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
try {
if(inputStream != null){inputStream.close();}
} catch (IOException e) {
e.printStackTrace();
}
}
}
最终结果 转换后文件
转换后的文件内容
文件预览效果
Java的优点是什么
1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布性,Java是面向网络的语言;4. 鲁棒性,java提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。;5. 安全性,用于网络、分布环境下的Java必须防止病毒的入侵。6. 体系结构中立,只要安装了Java运行时系统,就可在任意处理器上运行。7. 可移植性,Java可以方便地移植到网络上的不同机器。8.解释执行,Java解释器直接对Java字节码进行解释执行。
关于使用JAVA怎么将PDF转换为HTML文档问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
pdf转换html java,使用JAVA怎么将PDF转换为HTML文档相关推荐
- JAVA实现 PDF转换 常用工具类(html转PDF、PDF添加页码、PDF文件下载、PDF添加印章或者水印)
JAVA实现 PDF转换 常用工具类(html转PDF.PDF添加页码.PDF文件下载.PDF添加印章或者水印)可直接使用 package com.bestvike.util; import com. ...
- Word处理控件Aspose.Words功能演示:在 Java 中将 HTML 文件转换为 Word 文档
在各种情况下,您可能需要将 HTML 内容转换为 Word 文档.例如,用于从所见即所得 HTML 编辑器生成文档或将网页转换为 DOCX 或 DOC 格式.为了以编程方式执行此转换,本文介绍了如何将 ...
- java doc说明书_JAVADOC 常见使用方法 帮助文档
我们知道Java中有三种注释语句:1.//用于单行注释. 2./*...*/用于多行注释,从/*开始,到*/结束,不能嵌套.3./**...*/则是为支持jdk工具javadoc.exe而特有的注释语 ...
- java解析xml工具类_通过dom4j解析XML字符串XMLDocUtil工具类转换为XML文档及获取指定根节点及指定节点路径内容代码示例...
一.前言 通过dom4j解析XML文档的XMLDocUtil工具类,进行解析xml字符串为Document文档对象.获取根节点元素路径内容getRootElement.获取唯一路径节点的值getSin ...
- 计算机毕业设计Java银行贷款管理系统(系统+程序+mysql数据库+Lw文档)
计算机毕业设计Java银行贷款管理系统(系统+程序+mysql数据库+Lw文档) 计算机毕业设计Java银行贷款管理系统(系统+程序+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B/S架构 ...
- JAVA毕业设计花卉网站计算机源码+lw文档+系统+调试部署+数据库
JAVA毕业设计花卉网站计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计花卉网站计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...
- java毕业设计物业信息管理系统源码+lw文档+mybatis+系统+mysql数据库+调试
java毕业设计物业信息管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计物业信息管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 本源码技术栈 ...
- java毕业设计汽车售后服务管理系统源码+lw文档+mybatis+系统+mysql数据库+调试
java毕业设计汽车售后服务管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计汽车售后服务管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 本源 ...
- java毕业设计旅拍平台源码+lw文档+mybatis+系统+mysql数据库+调试
java毕业设计旅拍平台源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计旅拍平台源码+lw文档+mybatis+系统+mysql数据库+调试 本源码技术栈: 项目架构:B ...
最新文章
- 大牛书单 | Python方向的好书
- 大数据多属性的数据架构设计
- ERP项目实施的原则
- 解决ubuntu(16.04版本)和windows电脑之间无法复制粘贴问题
- 从Wiesloch火车站到SAP Walldorf总部的交通方式
- mysql创建临时表 分页_Mysql 如何创建一张临时表
- 摄像头,一万块三个,嘿嘿!欢迎来到一年一度iPhone 吐槽大会!
- selenium+unittest自动化测试(二)---浏览器控制及元素定位的方法
- Scrum与项目管理亲体验
- sql学习指南_SQL格式功能的全面指南
- ListView使用BaseAdapter与ListView的优化
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_4 ApplicationContext的三个实现类
- python模型参数估计_python – 从scipy.optimize.curve_fit获取与参数估计值相关的标准错误...
- 加密卡华为怎么模拟_华为手机NFC模拟加密的门禁卡详细教程
- dedecms采集经验
- 【有关数据库的问题】运行时错误‘3706’:未找到提供程序。该程序可能未正确安装。
- MATLAB Smoothing Spline 拟合
- GoDaddy域名转出教程 - 解锁、获取转移码、快速确认转出
- python如何赚外快 淘宝_Python如何爬取淘宝MM呢?教你一招
- ArcGIS 对道路名称进行标注
热门文章
- 使用PHPMail发送邮箱(163邮箱为例)
- Linux双系统蓝屏,装双系统其中有一个系统进不去(蓝屏)
- 【English】七月英语总结
- 【ZYNQ】ZYNQ7000 私有定时器及其驱动应用示例
- RK3288 android 7.1 EMMC 问题导致卡死在开机logo 界面
- Windows phone已上线小游戏源码分享1
- Arduino制作简易电子琴
- 英语口语笔记B1-Unit01.购物时尚-01-Buying clothes
- 怀旧服10月3日服务器维护,官方拿出10个亿?剑网三怀旧服延迟上线,补偿路人都赚爽了...
- 【软件设计】--乌云后依然是灿烂的晴天