package com.ann.demo.utils;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfWriter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @Author: LeiJiaXin
 * @Date: 2019/7/11 22:32
 */
public class PdfUtils {

    static final Logger logger = LoggerFactory.getLogger(PdfUtils.class);

    /**
     * 生成pdf文件
     *
     * @param imageFile
     * @param pdfFile   需要转换的图片路径的数组
     */
    public static String imagesToPdf(File imageFile, File pdfFile) throws IOException, DocumentException {
        String fileName = null;
        try {
            // 第一步：创建一个document对象。
            Document document = new Document();
            document.setMargins(0, 0, 0, 0);
            // 第二步：
            // 创建一个PdfWriter实例，
            PdfWriter.getInstance(document, new FileOutputStream(pdfFile));
            // 第三步：打开文档。
            document.open();
            // 第四步：在文档中增加图片。
            if (imageFile.getName().endsWith(".bmp")
                    || imageFile.getName().endsWith(".jpg")
                    || imageFile.getName().endsWith(".jpeg")
                    || imageFile.getName().endsWith(".gif")
                    || imageFile.getName().endsWith(".png")) {
                String imagesPath = imageFile.getAbsolutePath();
                Image img = Image.getInstance(imagesPath);
                img.setAlignment(Image.ALIGN_CENTER);
                // 根据图片大小设置页面，一定要先设置页面，再newPage（），否则无效
                document.setPageSize(new Rectangle(img.getWidth(), img.getHeight()));
                document.newPage();
                document.add(img);
            }
            // 第五步：关闭文档。
            document.close();
            //返回pdf路径
            fileName = pdfFile.getAbsolutePath();
        } catch (Exception e) {
            logger.error("出错咯！错误信息:" + e);
            throw e;
        }
        return fileName;
    }
}
