使用JAVA怎么将PDF转换为HTML文档
发布时间:-05-25 18:26:18
来源:亿速云
阅读:85
作者:Leah
使用JAVA怎么将PDF转换为HTML文档?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
引入Maven依赖
org.apache.pdfbox
pdfbox
2.0.12
工具实现类packagecom.frame.utils;
importorg.apache.pdfbox.pdmodel.PDDocument;
importorg.apache.pdfbox.rendering.PDFRenderer;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
importsun.misc.BASE64Decoder;
importsun.misc.BASE64Encoder;
importjavax.imageio.ImageIO;
importjava.awt.*;
importjava.awt.image.BufferedImage;
importjava.io.*;
publicclassPdfConvertHtmlUtil{
/**
*日志对象
*/
privatestaticLoggerlogger=LoggerFactory.getLogger(PdfConvertHtmlUtil.class);
/**
*PDF文档流转Png
*@parampdfFileInputStream
*@returnBufferedImage
*/
publicstaticBufferedImagepdfStreamToPng(InputStreampdfFileInputStream){
PDDocumentdoc=null;
PDFRendererrenderer=null;
try{
doc=PDDocument.load(pdfFileInputStream);
renderer=newPDFRenderer(doc);
intpageCount=doc.getNumberOfPages();
BufferedImageimage=null;
for(inti=0;i
if(image!=null){
image=combineBufferedImages(image,renderer.renderImageWithDPI(i,144));
}
if(i==0){
image=renderer.renderImageWithDPI(i,144);//WindowsnativeDPI
}
//BufferedImagesrcImage=resize(image,240,240);//产生缩略图
}
returncombineBufferedImages(image);
}catch(IOExceptione){
e.printStackTrace();
}finally{
try{
if(doc!=null){doc.close();}
}catch(IOExceptione){
e.printStackTrace();
}
}
returnnull;
}
/**
*BufferedImage拼接处理,添加分割线
*@paramimages
*@returnBufferedImage
*/
publicstaticBufferedImagecombineBufferedImages(BufferedImage...images){
intheight=0;
intwidth=0;
for(BufferedImageimage:images){
//height+=Math.max(height,image.getHeight());
height+=image.getHeight();
width=image.getWidth();
}
BufferedImagecombo=newBufferedImage(width,height,BufferedImage.TYPE_INT_ARGB);
Graphics2Dg2=combo.createGraphics();
intx=0;
inty=0;
for(BufferedImageimage:images){
//inty=(height-image.getHeight())/2;
g2.setStroke(newBasicStroke(2.0f));//线条粗细
g2.setColor(newColor(193,193,193));//线条颜色
g2.drawLine(x,y,width,y);//线条起点及终点位置
g2.drawImage(image,x,y,null);
//x+=image.getWidth();
y+=image.getHeight();
}
returncombo;
}
/**
*通过Base64创建HTML文件并输出html文件
*@parambase64
*@paramhtmlPathhtml保存路径
*/
publicstaticvoidcreateHtmlByBase64(Stringbase64,StringhtmlPath){
StringBuilderstringHtml=newStringBuilder();
PrintStreamprintStream=null;
try{
//打开文件
printStream=newPrintStream(newFileOutputStream(htmlPath));
}catch(FileNotFoundExceptione){
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(Exceptione){
e.printStackTrace();
}finally{
if(printStream!=null){printStream.close();}
}
}
/**
*bufferedImage转为base64编码
*@parambufferedImage
*@return
*/
publicstaticStringbufferedImageToBase64(BufferedImagebufferedImage){
ByteArrayOutputStreambyteArrayOutputStream=newByteArrayOutputStream();
Stringpng_base64="";
try{
ImageIO.write(bufferedImage,"png",byteArrayOutputStream);//写入流中
byte[]bytes=byteArrayOutputStream.toByteArray();//转换成字节
BASE64Encoderencoder=newBASE64Encoder();
//转换成base64串删除\r\n
png_base64=encoder.encodeBuffer(bytes).trim()
.replaceAll("\n","")
.replaceAll("\r","");
}catch(IOExceptione){
e.printStackTrace();
}
returnpng_base64;
}
}
测试Demopublicstaticvoidmain(String[]args){
Filefile=newFile("F:\\111\\Files\\MySQL查询语句大全集锦(经典珍藏).pdf");
StringhtmlPath="F:\\111\\Files\\MySQL查询语句大全集锦(经典珍藏).html";
InputStreaminputStream=null;
BufferedImagebufferedImage=null;
try{
inputStream=newFileInputStream(file);
bufferedImage=pdfStreamToPng(inputStream);
Stringbase64_png=bufferedImageToBase64(bufferedImage);
createHtmlByBase64(base64_png,htmlPath);
}catch(FileNotFoundExceptione){
e.printStackTrace();
}finally{
try{
if(inputStream!=null){inputStream.close();}
}catch(IOExceptione){
e.printStackTrace();
}
}
}
最终结果 转换后文件
转换后的文件内容
文件预览效果
Java的优点是什么
1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布性,Java是面向网络的语言;4. 鲁棒性,java提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。;5. 安全性,用于网络、分布环境下的Java必须防止病毒的入侵。6. 体系结构中立,只要安装了Java运行时系统,就可在任意处理器上运行。7. 可移植性,Java可以方便地移植到网络上的不同机器。8.解释执行,Java解释器直接对Java字节码进行解释执行。
关于使用JAVA怎么将PDF转换为HTML文档问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。