使用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文档相关推荐

  1. JAVA实现 PDF转换 常用工具类(html转PDF、PDF添加页码、PDF文件下载、PDF添加印章或者水印)

    JAVA实现 PDF转换 常用工具类(html转PDF.PDF添加页码.PDF文件下载.PDF添加印章或者水印)可直接使用 package com.bestvike.util; import com. ...

  2. Word处理控件Aspose.Words功能演示:在 Java 中将 HTML 文件转换为 Word 文档

    在各种情况下,您可能需要将 HTML 内容转换为 Word 文档.例如,用于从所见即所得 HTML 编辑器生成文档或将网页转换为 DOCX 或 DOC 格式.为了以编程方式执行此转换,本文介绍了如何将 ...

  3. java doc说明书_JAVADOC 常见使用方法 帮助文档

    我们知道Java中有三种注释语句:1.//用于单行注释. 2./*...*/用于多行注释,从/*开始,到*/结束,不能嵌套.3./**...*/则是为支持jdk工具javadoc.exe而特有的注释语 ...

  4. java解析xml工具类_通过dom4j解析XML字符串XMLDocUtil工具类转换为XML文档及获取指定根节点及指定节点路径内容代码示例...

    一.前言 通过dom4j解析XML文档的XMLDocUtil工具类,进行解析xml字符串为Document文档对象.获取根节点元素路径内容getRootElement.获取唯一路径节点的值getSin ...

  5. 计算机毕业设计Java银行贷款管理系统(系统+程序+mysql数据库+Lw文档)

    计算机毕业设计Java银行贷款管理系统(系统+程序+mysql数据库+Lw文档) 计算机毕业设计Java银行贷款管理系统(系统+程序+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B/S架构 ...

  6. JAVA毕业设计花卉网站计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计花卉网站计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计花卉网站计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...

  7. java毕业设计物业信息管理系统源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计物业信息管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计物业信息管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 本源码技术栈 ...

  8. java毕业设计汽车售后服务管理系统源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计汽车售后服务管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计汽车售后服务管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 本源 ...

  9. java毕业设计旅拍平台源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计旅拍平台源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计旅拍平台源码+lw文档+mybatis+系统+mysql数据库+调试 本源码技术栈: 项目架构:B ...

最新文章

  1. 大牛书单 | Python方向的好书
  2. 大数据多属性的数据架构设计
  3. ERP项目实施的原则
  4. 解决ubuntu(16.04版本)和windows电脑之间无法复制粘贴问题
  5. 从Wiesloch火车站到SAP Walldorf总部的交通方式
  6. mysql创建临时表 分页_Mysql 如何创建一张临时表
  7. 摄像头,一万块三个,嘿嘿!欢迎来到一年一度iPhone 吐槽大会!
  8. selenium+unittest自动化测试(二)---浏览器控制及元素定位的方法
  9. Scrum与项目管理亲体验
  10. sql学习指南_SQL格式功能的全面指南
  11. ListView使用BaseAdapter与ListView的优化
  12. 阶段3 2.Spring_03.Spring的 IOC 和 DI_4 ApplicationContext的三个实现类
  13. python模型参数估计_python – 从scipy.optimize.curve_fit获取与参数估计值相关的标准错误...
  14. 加密卡华为怎么模拟_华为手机NFC模拟加密的门禁卡详细教程
  15. dedecms采集经验
  16. 【有关数据库的问题】运行时错误‘3706’:未找到提供程序。该程序可能未正确安装。
  17. MATLAB Smoothing Spline 拟合
  18. GoDaddy域名转出教程 - 解锁、获取转移码、快速确认转出
  19. python如何赚外快 淘宝_Python如何爬取淘宝MM呢?教你一招
  20. ArcGIS 对道路名称进行标注

热门文章

  1. 使用PHPMail发送邮箱(163邮箱为例)
  2. Linux双系统蓝屏,装双系统其中有一个系统进不去(蓝屏)
  3. 【English】七月英语总结
  4. 【ZYNQ】ZYNQ7000 私有定时器及其驱动应用示例
  5. RK3288 android 7.1 EMMC 问题导致卡死在开机logo 界面
  6. Windows phone已上线小游戏源码分享1
  7. Arduino制作简易电子琴
  8. 英语口语笔记B1-Unit01.购物时尚-01-Buying clothes
  9. 怀旧服10月3日服务器维护,官方拿出10个亿?剑网三怀旧服延迟上线,补偿路人都赚爽了...
  10. 【软件设计】--乌云后依然是灿烂的晴天