电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

JAVA實現PDF轉HTML文檔的示例代碼

瀏覽:8日期:2022-08-11 17:56:15

本文是基于PDF文檔轉PNG圖片,然后進行圖片拼接,拼接后的圖片轉為base64字符串,然后拼接html文檔寫入html文件實現PDF文檔轉HTML文檔。

引入Maven依賴

<!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox --> <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.12</version> </dependency>

工具實現類

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.*;/** * PDF文檔轉HTML文檔 * @author LXW * @date 2020/6/17 16:45 */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 < pageCount; 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('<html><head>');stringHtml.append('<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>');stringHtml.append('<title></title>');stringHtml.append('</head>');stringHtml.append('<body + ' text-align: center;rn' + ' background-color: #C1C1C1;rn' + ''>');stringHtml.append('<img src='data:image/png;base64,' + base64 + '' />');stringHtml.append('<a name='head' style='position:absolute;top:0px;'></a>');//添加錨點用于返回首頁stringHtml.append('<a href='http://www.hdgsjgj.cn/bcjs/4659.html#head'>回到首頁</a>');stringHtml.append('</body></html>');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串 刪除 rn png_base64 = encoder.encodeBuffer(bytes).trim() .replaceAll('n', '') .replaceAll('r', '');} catch (IOException e) { e.printStackTrace();}return png_base64; }}

測試Demo

public static void main(String[] args) {File file = new File('F:111FilesMySQL查詢語句大全集錦(經典珍藏).pdf');String htmlPath = 'F:111FilesMySQL查詢語句大全集錦(經典珍藏).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實現PDF轉HTML文檔的示例代碼

轉換后的文件內容

JAVA實現PDF轉HTML文檔的示例代碼

文件預覽效果

JAVA實現PDF轉HTML文檔的示例代碼

到此這篇關于JAVA實現PDF轉HTML文檔的示例代碼的文章就介紹到這了,更多相關JAVA PDF轉HTML 內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 船用烟火信号弹-CCS防汛救生圈-船用救生抛绳器(海威救生设备) | 骨龄仪_骨龄检测仪_儿童骨龄测试仪_品牌生产厂家【品源医疗】 | 上海盐水喷雾试验机_两厢式冷热冲击试验箱-巨怡环试 | 耐酸碱胶管_耐腐蚀软管总成_化学品输送软管_漯河利通液压科技耐油耐磨喷砂软管|耐腐蚀化学软管 | 劳动法网-专业的劳动法和劳动争议仲裁服务网 | RFID电子标签厂家-上海尼太普电子有限公司 | 依维柯自动挡房车,自行式国产改装房车,小型房车价格,中国十大房车品牌_南京拓锐斯特房车 - 南京拓锐斯特房车 | 浙江上沪阀门有限公司| 焊管生产线_焊管机组_轧辊模具_焊管设备_焊管设备厂家_石家庄翔昱机械 | 橡胶弹簧|复合弹簧|橡胶球|振动筛配件-新乡市永鑫橡胶厂 | 定制/定做衬衫厂家/公司-衬衫订做/订制价格/费用-北京圣达信 | 小型UV打印机-UV平板打印机-大型uv打印机-UV打印机源头厂家 |松普集团 | 合肥制氮机_合肥空压机厂家_安徽真空泵-凯圣精机 | 超声骨密度仪-动脉硬化检测仪器-人体成分分析仪厂家/品牌/价格_南京科力悦 | 全自动过滤器_反冲洗过滤器_自清洗过滤器_量子除垢环_量子环除垢_量子除垢 - 安士睿(北京)过滤设备有限公司 | 头条搜索极速版下载安装免费新版,头条搜索极速版邀请码怎么填写? - 欧远全 | 无硅导热垫片-碳纤维导热垫片-导热相变材料厂家-东莞市盛元新材料科技有限公司 | 北京开业庆典策划-年会活动策划公司-舞龙舞狮团大鼓表演-北京盛乾龙狮鼓乐礼仪庆典策划公司 | 中视电广_短视频拍摄_短视频推广_短视频代运营_宣传片拍摄_影视广告制作_中视电广 | 空气弹簧|橡胶气囊|橡胶空气弹簧-上海松夏减震器有限公司 | 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 地图标注-手机导航电子地图如何标注-房地产商场地图标记【DiTuBiaoZhu.net】 | 道康宁消泡剂-瓦克-大川进口消泡剂供应商 | 档案密集架,移动密集架,手摇式密集架,吉林档案密集架-厂家直销★价格公道★质量保证 | 健康管理师报名入口,2025年健康管理师考试时间信息网-网站首页 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 焊管生产线_焊管机组_轧辊模具_焊管设备_焊管设备厂家_石家庄翔昱机械 | 无缝方管|无缝矩形管|无缝方矩管|无锡方管厂家 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 铣刨料沥青破碎机-沥青再生料设备-RAP热再生混合料破碎筛分设备 -江苏锡宝重工 | 陕西安玻璃自动感应门-自动重叠门-磁悬浮平开门厂家【捷申达门业】 | 陕西自考报名_陕西自学考试网| 空气能暖气片,暖气片厂家,山东暖气片,临沂暖气片-临沂永超暖通设备有限公司 | 耐磨陶瓷,耐磨陶瓷管道_厂家-淄博拓创陶瓷科技 | 灌装封尾机_胶水灌装机_软管灌装封尾机_无锡和博自动化机械制造有限公司 | 伺服电机_直流伺服_交流伺服_DD马达_拓达官方网站 | 电子万能试验机_液压拉力试验机_冲击疲劳试验机_材料试验机厂家-济南众标仪器设备有限公司 | 达利园物流科技集团- | 济南拼接屏_山东液晶拼接屏_济南LED显示屏—维康国际官网 | 药品/药物稳定性试验考察箱-埃里森仪器设备(上海)有限公司 | 高铝轻质保温砖_刚玉莫来石砖厂家_轻质耐火砖价格 |