Java

JAVA 图片转PDF

2021-10-13  本文已影响0人  任未然

没什么好说的,直接上代码吧

import com.itextpdf.text.BadElementException;
import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfWriter;
import org.springframework.util.CollectionUtils;

import java.io.IOException;
import java.io.OutputStream;
import java.util.List;

/**
 * Pdf工具类
 *
 * @author 王培任
 * @date 2021/10/13
 */
public class PdfUtil {

    /**
     * 图片转PDF
     * @param images 图片的url
     * @throws Exception
     */
    public static void imageToPdf(List<String> images, OutputStream outputStream) throws Exception {
        Document document = new Document();
        // 设置文档页边距
        document.setMargins(0, 0, 0, 0);
        try {
            PdfWriter.getInstance(document, outputStream);
            // 打开文档
            document.open();

            if(!CollectionUtils.isEmpty(images)){
                images.forEach(url->{
                    try {
                        Image image = getImage(url);
                        // 设置页面宽高与图片一致
                        Rectangle rectangle = new Rectangle(image.getScaledWidth(), image.getScaledHeight());
                        document.setPageSize(rectangle);
                        // 新建一页添加图片
                        document.newPage();
                        document.add(image);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                });
            }
        } finally {
            // 关闭文档
            document.close();
            try {
                outputStream.flush();
                outputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 获取图片
     * @param url
     * @return
     * @throws BadElementException
     * @throws IOException
     */
    private static Image getImage(String url) throws BadElementException, IOException {
        // 获取图片的宽高
        Image image = Image.getInstance(url);
        // 调整图片缩放
        image.scaleToFit(600,600);
        // 图片居中
        image.setAlignment(Image.ALIGN_CENTER);
        return image;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读