这个是我之前做发票业务时弄的,记录一下。
当时需求是要将发票的pdf转化为图片让用户预览,并支持长按图片进行保存。
使用pdfbox实现,用起来很方便。
1.引用jar包
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.16</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>2.0.16</version>
</dependency>
2.实现代码
代码里有个方法是用icepdf转换的,有兴趣也可以研究
icepdf是开源的,但是好像字体支持要收费。
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.icepdf.core.exceptions.PDFException;
import org.icepdf.core.exceptions.PDFSecurityException;
import org.icepdf.core.pobjects.Document;
import org.icepdf.core.pobjects.Page;
import org.icepdf.core.util.GraphicsRenderingHints;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
public class PDF2ImageUtil {
/**
* 经过测试,dpi为96,100,105,120,150,200中,
* 120,150,200显示效果较为清晰,体积稳定,dpi越高图片体积越大
*/
public static final float DEFAULT_DPI = 200;
public static final String DEFAULT_FORMAT = "jpg";
/**
* pdf转图片,demo
* (使用 pdfbox)
* @param pdfPath PDF路径
* @imgPath img路径
* @page_end 要转换的页码,也可以定义开始页码和结
Java使用PDFBox将PDF转为图片并解决乱码问题

本文介绍了如何使用Java的PDFBox库将PDF转换为图片,以及在Linux环境下遇到的字体乱码问题。通过重写UnixFontDirFinder类,将字体路径指向项目内的字体文件夹,解决了因缺少字体导致的乱码问题。同时,当PDF使用新字体时,只需将对应字体文件放入项目目录即可。
最低0.47元/天 解锁文章
1596

被折叠的 条评论
为什么被折叠?



