pdf转化为图片并且把图片纵向拼接在一起java代码示例
import cn.hutool.core.io.FileUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* @author No One
* @description:
* @date 2022/12/9 15:55
*/
@Slf4j
public class PdfUtilsTest {
/**
* 根据http路径下载 pdf并转化为图片
*/
public static BufferedImage pdf2BufferedImageByFileAndMerge(String path,boolean isHorizontal,int dpi) {
// 将pdf装图片 并且自定义图片得格式大小
PDDocument doc = null;
try {
byte[] bytes = FileUtil.readBytes(new File(path));
doc = PDDocument.load(bytes);
PDFRenderer renderer = new PDFRenderer(doc);
int pageCount = doc.getNumberOfPages();
log.info("pdf 总页码为:{}",pageCount);
List<BufferedImage> imagesList = new ArrayList<>();
for (int i = 0; i < pageCount; i++) {
BufferedImage image = renderer.renderImageWithDPI(i, dpi);
imagesList.add(image);
}
return MergeImage.mergeImage(isHorizontal, imagesList);
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if (doc != null) {
doc.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
public static void main(String[] args) throws IOException {
String path = "D:\\项目资料\\2024共有产权房资料\\社保证明.pdf";
BufferedImage bufferedImage = pdf2BufferedImageByFileAndMerge(path,false,300);
ImageIO.write(bufferedImage, "jpg", new File("D:\\项目资料\\2024共有产权房资料\\社保证明.jpg"));
}
}