Java实现图片转化为pdf
Posted 赵广陆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java实现图片转化为pdf相关的知识,希望对你有一定的参考价值。
目录
需求比较简单就是Java实现图片转化为pdf,原本要求html转图片再转pdf,看了几种方案其实都很差劲,不如后端直接转保证清晰度。
1 导入jar包
方法一:导入
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.4.2</version>
</dependency>
2 工具类
使用的时候,需要修改 ImageTransformPDF()函数中的输入图片路径和输出pdf路径
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfWriter;
import com.minyeling.xxx.controller.ImageTransformPDF;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
/**
* 使用时,需要修改 ImageTransformPDF()函数中的输入图片和输出pdf
*/
public class Main4
public static String ImageTransformPDF()
new ImageTransformPDF().imgOfPdf("输出pdf的路径和文件名(带后缀)", "需要转化成pdf的文件的路径");
return "200!ok";
//为终极函数做铺垫
public static File Pdf(ArrayList<String> imageUrllist, String mOutputPdfFileName)
Document doc = new Document(PageSize.A4, 0, 0, 0, 0); //new一个pdf文档
try
PdfWriter.getInstance(doc, new FileOutputStream(mOutputPdfFileName)); //pdf写入
doc.open();//打开文档
for (int i = 0; i < imageUrllist.size(); i++) //循环图片List,将图片加入到pdf中
doc.newPage(); //在pdf创建一页
Image png1 = Image.getInstance(imageUrllist.get(i)); //通过文件路径获取image
float heigth = png1.getHeight();
float width = png1.getWidth();
int percent = getPercent2(heigth, width);
png1.setAlignment(Image.MIDDLE);
png1.scalePercent(percent + 3);// 表示是原来图像的比例;
doc.add(png1);
doc.close();
catch (FileNotFoundException e)
e.printStackTrace();
catch (DocumentException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
File mOutputPdfFile = new File(mOutputPdfFileName); //输出流
if (!mOutputPdfFile.exists())
mOutputPdfFile.deleteOnExit();
return null;
return mOutputPdfFile; //反回文件输出流
public static int getPercent(float h, float w)
int p = 0;
float p2 = 0.0f;
if (h > w)
p2 = 297 / h * 100;
else
p2 = 210 / w * 100;
p = Math.round(p2);
return p;
public static int getPercent2(float h, float w)
int p = 0;
float p2 = 0.0f;
p2 = 530 / w * 100;
p = Math.round(p2);
return p;
/**
* @Description: 通过图片路径及生成pdf路径,将图片转成pdf
* @Author: zd
* @Date: 2019/9/29
*/
public void imgOfPdf(String filepath, String imgUrl)
try
ArrayList<String> imageUrllist = new ArrayList<String>(); //图片list集合
String[] imgUrls = imgUrl.split(",");
for (int i=0; i<imgUrls.length; i++)
imageUrllist.add(imgUrls[i]);
String pdfUrl = filepath; //输出pdf文件路径
File file = this.Pdf(imageUrllist, pdfUrl);//生成pdf
file.createNewFile();
catch (IOException e)
e.printStackTrace();
3 效果
耗时大概1s左右,创建空白的Document较慢,建议提前创建对象
以上是关于Java实现图片转化为pdf的主要内容,如果未能解决你的问题,请参考以下文章