PDF文件转换图片格式,解决中文乱码问题

news/2024/11/30 1:46:14/

在网上找过很多方法,都有中文乱码的的问题。
这里使用PdfBox方法解决中文的乱码问题

依赖jar包
pdfbox-app 2.0.16
fontbox 2.0.16

		<!-- Maven坐标 --><!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox-app --><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox-app</artifactId><version>2.0.16</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.pdfbox/fontbox --><dependency><groupId>org.apache.pdfbox</groupId><artifactId>fontbox</artifactId><version>2.0.16</version></dependency>
package com.archser.fserver.util;import java.awt.image.BufferedImage;
import java.io.File;import javax.imageio.ImageIO;import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;public class PDFChangeToImage {// 默认图片分辨率按需求调节,该参数影响生成时间public static final float DEFAULT_DPI = 500;// 默认转换的图片格式为jpg// 如果生成将PDF生成一张长图片时,页数过大会抛出异常建议使用PNG格式public static final String DEFAULT_FORMAT = "jpg";/*** 将PDF每一页保存为一个图片* * @param pdfPath PDF文件地址* @param imgPath 保存文件地址*/public static void pdfToImage(String pdfPath, String imgPath) {try {File file = new File(pdfPath);String name = file.getName().replaceAll("\\.pdf", "");// PdfBox生成图像PDDocument pdDocument = PDDocument.load(file);PDFRenderer renderer = new PDFRenderer(pdDocument);// 存储文件StringBuffer imgFilePath;String savePath = imgPath + "\\" + name;// 验证路径是否存在createDirectory(savePath);for (int i = 0, len = pdDocument.getNumberOfPages(); i < len; i++) {imgFilePath = new StringBuffer();imgFilePath.append(savePath);imgFilePath.append("\\" + name);imgFilePath.append("_");imgFilePath.append(String.valueOf(i + 1));imgFilePath.append("." + DEFAULT_FORMAT);File dstFile = new File(imgFilePath.toString());BufferedImage image = renderer.renderImageWithDPI(i, DEFAULT_DPI);ImageIO.write(image, DEFAULT_FORMAT, dstFile);}} catch (Exception e) {e.printStackTrace();}}/*** 将PDF保存为一个长图片* * @param pdfPath  PDF文件地址* @param imgPath  保存文件地址,需要实体文件 例如 C:\\file\\1.jpg* @param page_end 需要转换的页数 -1 为转换全部*/public static void pdfToImage(String pdfPath, String imgPath, int page_end) {try {// 宽度int width = 0;// 保存一张图片中的RGB数据int[] singleImgRGB;int shiftHeight = 0;// 保存每张图片的像素值BufferedImage imageResult = null;// 利用PdfBox生成图像PDDocument pdDocument = PDDocument.load(new File(pdfPath));PDFRenderer renderer = new PDFRenderer(pdDocument);// 循环每个页码for (int i = 0, len = pdDocument.getNumberOfPages(); i < len; i++) {if (i == -1 || i == page_end) {BufferedImage image = renderer.renderImageWithDPI(i, DEFAULT_DPI, ImageType.RGB);int imageHeight = image.getHeight();int imageWidth = image.getWidth();// 使用第一张图片宽度;width = imageWidth;// 保存每页图片的像素值imageResult = new BufferedImage(width, imageHeight, BufferedImage.TYPE_INT_RGB);// 这里有高度,可以将imageHeight*len,我这里值提取一页所以不需要singleImgRGB = image.getRGB(0, 0, width, imageHeight, null, 0, width);// 写入流中imageResult.setRGB(0, shiftHeight, width, imageHeight, singleImgRGB, 0, width);} else if (i > page_end) {continue;}}pdDocument.close();// 写图片ImageIO.write(imageResult, DEFAULT_FORMAT, new File(imgPath));} catch (Exception e) {e.printStackTrace();}}private static boolean createDirectory(String folder) {File dir = new File(folder);if (dir.exists()) {return true;} else {return dir.mkdirs();}}}

http://www.ppmy.cn/news/363328.html

相关文章

Android Studio打开文件错乱,Java文件图标由“C”变成蓝色的“J”,打开Java文件显示xml乱码,打开xml文件出现png格式图片乱码的问题

在刚接触Android Studio的时候&#xff0c;由于不明不白的原因&#xff0c;出现了如标题所示的打开文件错乱&#xff0c;打开Java文件出现的是后面的xml文件代码&#xff0c;Java文件图标由“C”变成蓝色的“J”&#xff0c;打开Java文件显示xml乱码&#xff0c;打开xml文件出现…

Tp5 打开PDF文件乱码的问题

使用tp3 显示pdf文件没有问题&#xff1a; $file d:/1.pdf; $filename 1.pdf; header(Content-type: application/pdf); header(Content-Disposition: inline; filename".$filename."); header(Content-Transfer-Encoding: binary); header(Accept-Ranges: bytes);…

解决从PDF复制文字后乱码问题

背景 需要从PDF复制文字出来做笔记&#xff0c;可是谁知道PDF通过adobe打开后复制出来后是乱码&#xff0c;如下图所示&#xff1a; 解决 尝试过安装字体&#xff0c;可惜没卵用。 方法1-CAJViewer打开 用该软件打开后复制&#xff0c;可以完美复制&#xff0c;但是有个小问题…

sogou输入法出现乱码

解决方式 cd ~/.config rm -rf SogouPY* sogou* 注销重新登录

wps打开pdf乱码_wps打开pdf乱码

pdf用wps打开,怎么开目录(共6篇)如何用WPS将word文件输出为pdf文件如何用WPS将word文件输出为pdf文件利用WPS的特色功能可以实现将word文件输出为pdf文件。 第一步,用WPS打开要转换的word excel ppt文档(本文以本word文档为例);第二步,点击选项板中的最后一个“特色功能”选…

PDF转换成图片(Java pdfbox实现 附中文乱码解决方案)

PDF转换成图片(Java pdfbox实现) pdf转成图片在java中主流的做法就是pdfbox和icepdf 然而我选择pdfbox 废话不多说上代码 引入依赖 <!--pdfbox--><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><…

苹果IOS 微信浏览器预览PDF乱码 解决方案

在此之前&#xff0c;此功能的实现是用户点击一个url&#xff0c;服务器返回一个二进制流&#xff0c;浏览器下载后是一个PDF文件&#xff0c;客户可以进行浏览。 此次收到了合作方的新要求&#xff0c;能够在微信中点击url &#xff0c;直接预览PDF中的内容。 第一版&…

iOS-关于解决WebView、WKWEbView打开pdf文件乱码问题

今天遇到了WebView打开pdf乱码的问题&#xff0c;百度了一下&#xff0c;遂找到了解决方法&#xff0c;在这记录一下&#xff0c;原贴地址 原贴整理了两种解决方法&#xff0c;我试了第二种没成功&#xff0c;也没搞懂是什么问题&#xff0c;下面就整理一下第一种解决方法。 …