https://blog.csdn.net/atpalain_csdn/article/details/50801639
博主说的前面是可行的,不过要补充些
1、按博主的操作完成之后,必须要重启linux才行!!!,既运行命令reboot
2、如果不知道哪些字体需要,可以把所有的字体安装上去
3、博主的应该linux应该是本地物理机的,如果是阿里云服务器什么的就不用u盘,当然也用不起,直接winscp什么的工具移动字体文件就是了。
亲测可行
附pdf转图片代码
package com.coolsn.modules.tb.pdf2image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import com.coolsn.common.weixin.common.log.Log;
/**
* @author Think
* 作者:yanjiaxin1996
* 来源:CSDN
* 原文:https://blog.csdn.net/yanjiaxin1996/article/details/80561071
*
* 完善:tb
* 时间:2018-12-11
*
*/
public class PDF2Image {
static Logger log = Logger.getLogger(PDF2Image.class);
/**
* 转换后图片为png图片
* @param pdfPath pdf文件所在路径
* @param imageBasePath 图片保存目录路径,如果为为空则保存在于pdf相同目录,多张图片以文件名加index的形式
* @param indexOfStart 开始页标
* @param indexOfEnd 结束页标,如果结束页标大于最大页数则取最大页数,如果结束页标为0则取最大页数
* @return
*/
public static boolean pdf2png(String pdfPath,String imageBasePath,int indexOfStart,int indexOfEnd) {
Log logNormal = new Log("pdf2png");
logNormal.append("pdfPath is "+pdfPath);
logNormal.append("indexOfStart is "+indexOfStart);
logNormal.append("indexOfEnd is "+indexOfEnd);
// 将pdf装图片 并且自定义图片得格式大小
File file = new File(pdfPath);
if(!file.exists()) {
logNormal.append("pdf 文件不存在!!");
log.error(logNormal.get());
return false;
}
String fileName = file.getName();
String parentPath = file.getParentFile().getAbsolutePath();
String fileWithoutExName = fileName.substring(0, fileName.lastIndexOf("."));
if(StringUtils.isNotBlank(imageBasePath)) {
parentPath = imageBasePath;
}
logNormal.append("image save path is "+parentPath);
try {
PDDocument doc = PDDocument.load(file);
PDFRenderer renderer = new PDFRenderer(doc);
int pageCount = doc.getNumberOfPages();
if(indexOfEnd > pageCount || indexOfEnd <= 0) {//如果自定义结束页标超出了最大页数或是小于0,已最大页数为准
indexOfEnd = pageCount;
}
for (int i = indexOfStart; i < indexOfEnd; i++) {
BufferedImage image = renderer.renderImageWithDPI(i, 144); // Windows native DPI
// BufferedImage srcImage = resize(image, 240, 240);//产生缩略图
File imageFile = new File(parentPath+"/"+fileWithoutExName+"_"+(i+1)+".png");
if(!imageFile.exists()) {//节约io,当目标未见不存在时才转换
ImageIO.write(image, "PNG",imageFile );
}
}
log.info(logNormal.get());
return true;
} catch (IOException e) {
logNormal.append("转换出错");
log.error(logNormal.get());
e.printStackTrace();
return false;
}
}
public static void main(String[] args) {
pdf2png("D:\\installpackage\\系统\\0_88344489_051001600111.pdf",null,0,0);
}
pom文件添加
<!-- https://mvnrepository.com/artifact/org.apache.pdfbox/fontbox -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>2.0.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.9</version>
</dependency>
其中的logNormal是自己的封装类,可以删了就好