色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

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

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

瀏覽:4日期: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.lshqa.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
相關文章:
主站蜘蛛池模板: 18视频网站在线观看 | 伊人婷婷色香五月综合缴激情 | 国产精品成久久久久三级 | 亚洲在线精品视频 | 精品国产日韩亚洲一区二区 | 亚洲色色色图 | 男人好大好硬好爽免费视频 | 日韩精品亚洲人成在线观看 | 亚洲看片| 狠狠综合久久久久综合小说网 | 欧美日韩一区二区在线视频 | 亚洲 自拍 欧美 综合 | 欧美成人鲁丝片在线观看 | 成人禁在线观看网站 | 全国男人的天堂网 | 特级毛片8级毛片免费观看 特级毛片免费观看视频 | 男人毛片| 国产美女视频做爰 | 日韩国产免费一区二区三区 | 久久污| 中文久草 | 国产91丝袜在线播放九色 | 久草观看 | 亚欧毛片 | 天天综合色一区二区三区 | 亚洲精品一区二区在线观看 | 美女视频全部免费 | 亚洲黄色美女视频 | 色综合久久久久 | hd最新国产人妖ts视频 | 国产午夜精品理论片小yo奈 | 看一级毛片 | 国内精品久久久久久中文字幕 | 日本一区二区三区在线 视频观看免费 | 亚洲精品视频免费观看 | 成人亚洲欧美日韩中文字幕 | 97在线视频免费公开观看 | 视频一区 欧美 | 国产成人精品女人不卡在线 | 波多野吉衣 免费一区 | 精品国产高清久久久久久小说 |