日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:26日期: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.b3g6.com/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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩亚洲三区| 精品资源在线| 国产日韩欧美高清免费| 亚洲五月婷婷| 日韩不卡免费高清视频| 狂野欧美性猛交xxxx| 久久狠狠亚洲综合| 日韩中文一区二区| 亚洲tv在线| 国产日韩亚洲| 久久精品一区二区三区中文字幕| 中文一区一区三区免费在线观 | 久久一级电影| 精品少妇av| 国产调教精品| 日韩精品免费视频一区二区三区| 午夜在线视频观看日韩17c| 国产精品精品国产一区二区| 蜜臀久久久久久久| 久久国产精品毛片| 欧美日韩国产高清| 1024精品一区二区三区| 成人日韩在线| 国产精品蜜芽在线观看| 国产成人精品999在线观看| 精品美女在线视频| 日本一区中文字幕| 乱人伦精品视频在线观看| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 亚洲精品黄色| 免费人成在线不卡| 综合一区二区三区| 国产福利片在线观看| 国产精品片aa在线观看| 日韩va亚洲va欧美va久久| 蜜桃久久久久久| 特黄特色欧美大片| 精品久久久亚洲| 久久精品国内一区二区三区| 国产图片一区| 日韩中文字幕视频网| 亚洲精品免费观看| 国产精品91一区二区三区| 999精品在线| 蜜臀av在线播放一区二区三区| 亚洲一区导航| 色网在线免费观看| 老司机精品视频网| 久久99蜜桃| 高清不卡亚洲| 亚洲视频二区| 韩国精品主播一区二区在线观看 | 亚洲日本国产| 国产成人久久| 亚洲三级视频| 久久久久九九精品影院| 国产一区欧美| 国产精品theporn| 午夜久久av| 欧美粗暴jizz性欧美20| 久久免费精品| 蜜桃视频第一区免费观看| 国产精品一级| 老牛影视一区二区三区| 裤袜国产欧美精品一区| 日韩中文字幕一区二区三区| 欧美激情一区| 日韩精品dvd| 国产精品分类| 综合干狼人综合首页| 国产91精品对白在线播放| 国产精选在线| 欧美成人亚洲| 午夜欧美视频| 亚洲日产av中文字幕| 国产精品1区| 国产精品7m凸凹视频分类| 日日夜夜免费精品视频| 精品三级av| 国产成人精品亚洲日本在线观看| 影音先锋久久| 久久久久国产一区二区| 久久av综合| 成人国产精品一区二区免费麻豆| 欧美久久一区二区三区| 丝袜诱惑一区二区| 国产成年精品| 日韩成人高清| 99成人在线| 欧美aa在线观看| 久久婷婷亚洲| 免费欧美一区| 亚洲少妇诱惑| 欧美日韩中文字幕一区二区三区| 麻豆极品一区二区三区| 日韩不卡在线观看日韩不卡视频| 日韩av中文字幕一区| 国产精品视频一区二区三区| 精品国产麻豆| 亚洲激情不卡| 欧美亚洲综合视频| 另类欧美日韩国产在线| 久久久久99| 亚洲欧美在线综合| 91欧美极品| 日韩在线观看| 亚洲二区免费| 四虎精品永久免费| 欧美亚洲网站| 国产理论在线| 夜久久久久久| 免费久久99精品国产| 久久大逼视频| 国产伦精品一区二区三区在线播放| 日韩不卡免费高清视频| 日韩精品1区2区3区| 亚洲性图久久| 911亚洲精品| 亚洲一区日本| 久久精品动漫| 欧美精品不卡| 亚洲欧美久久| 成人污污视频| 亚洲精品成人一区| 国产一区调教| 日韩高清欧美激情| 免费在线观看视频一区| 国内在线观看一区二区三区| 日韩精品欧美大片| 亚洲欧美日韩专区| 欧美在线网站| 免费观看在线综合| 三级欧美在线一区| 亚洲深爱激情| 模特精品在线| 亚洲一区二区三区久久久| 亚洲视频www| 一级欧美视频| 亚洲视频二区| 国产精品亚洲一区二区在线观看| 亚洲日产国产精品| 日韩欧美2区| 美女精品一区二区| 激情自拍一区| 欧美在线91| 精品视频久久| 狠狠干成人综合网| 国产欧美日韩一区二区三区在线| 精精国产xxxx视频在线野外| 国产精品白浆| 欧美二区视频| 日韩三级久久| 亚洲人亚洲人色久| av资源新版天堂在线| 亚州精品视频| 日韩免费一区| 中文一区一区三区免费在线观 | 国产精品手机在线播放| 天使萌一区二区三区免费观看| av一区在线| 播放一区二区| 亚洲成av人片一区二区密柚| 久久一级电影| 国产亚洲亚洲| 日韩国产欧美在线视频| 亚洲日本欧美| 日韩中文字幕| 国产伦乱精品| 国产日韩一区二区三区在线播放 | 日韩中文字幕在线一区| 日韩精品91亚洲二区在线观看| 日韩一区二区三区免费视频| 国产精品手机在线播放| 97se综合| 日精品一区二区三区| 久久精品系列| 成人在线视频中文字幕| 欧美色图国产精品| 亚欧成人精品| 国产成人免费精品| 91超碰国产精品| 亚洲日本欧美| 国产精品分类| 五月精品视频| 美女精品久久| 日韩一区二区三区在线免费观看| 视频精品一区二区| 精品视频一区二区三区在线观看| 欧美日韩三区| 精品不卡一区| 久热精品在线| 91精品一区国产高清在线gif| 日本成人在线视频网站| 99久久九九| 久久亚洲黄色| 伊人精品久久| 日韩免费高清| 91成人精品观看| 亚洲无线一线二线三线区别av| 麻豆国产精品|