package com.tofly.gpsboot.config.car;

import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


/**
 * 生成PDF文件
 */
public class PdfUtil {

    /**
     * @param fileName   生成pdf文件
     * @param imagesPath 需要转换的图片路径的数组
     */
    public static void imagesToPdf(String fileName, String imagesPath) {
        try {
            fileName = imagesPath + "\\" + fileName + ".pdf";
            File file = new File(fileName);
            if (!file.getParentFile().exists()) {
                file.getParentFile().mkdirs();
            }
            // 第一步：创建一个document对象。
            Document document = new Document(PageSize.A4, 20, 20, 20, 20); //new一个pdf文档
            // 第二步：
            // 创建一个PdfWriter实例，
            PdfWriter.getInstance(document, new FileOutputStream(file));
            // 第三步：打开文档。
            document.open();
            // 第四步：在文档中增加图片。
            File files = new File(imagesPath);
            String[] images = files.list();
            Arrays.sort(images);

            int len = images.length;
            PdfPTable table = new PdfPTable(2);
            for (int i = 0; i < len; i++) {
                if (images[i].toLowerCase().endsWith(".bmp")
                        || images[i].toLowerCase().endsWith(".jpg")
                        || images[i].toLowerCase().endsWith(".jpeg")
                        || images[i].toLowerCase().endsWith(".gif")
                        || images[i].toLowerCase().endsWith(".png")) {
                    String temp = imagesPath + "\\" + images[i];
                    Image img = Image.getInstance(temp);
                    PdfPCell cell = new PdfPCell();
                    cell.addElement(img);
                    if (i % 2 == 1) {
                        img.setAlignment(Image.RIGHT);
                    } else {
                    }
                    cell.setPadding(25f);
                    cell.setRowspan(2);
                    cell.setBorder(0);
                    table.addCell(cell);
                    table.setSplitLate(false);
                    table.setSplitRows(false);
                }
            }
            document.add(table);

            document.newPage();
            // 第五步：关闭文档。
            document.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }


    /**
     * @param file   生成pdf文件
     * @param imagesPath 需要转换的图片路径的数组
     */
    public static File imagesToPdf2(File file, String imagesPath) {
        try {

            // 第一步：创建一个document对象。
            Document document = new Document(PageSize.A4, 20, 20, 20, 20); //new一个pdf文档
            // 第二步：
            // 创建一个PdfWriter实例，
            PdfWriter.getInstance(document, new FileOutputStream(file));
            // 第三步：打开文档。
            document.open();
            // 第四步：在文档中增加图片。
            File files = new File(imagesPath);
            String[] imageList = files.list();
            Arrays.sort(imageList);
            List<String> images = new ArrayList<String>(Arrays.asList(imageList));
//            if (images.size() % 2 == 0) {
//                String bImgPath = imagesPath + "\\" +"zzzzzzzzzzz"+SecurityUtils.getUserId() + ".png";
//                String color = "255,255,255";
//                BackgroundImageUtils.createBackgroundImg(qrcode.getQrSize(),qrcode.getQrSize(),color,bImgPath);
//                images.add(bImgPath.substring(bImgPath.lastIndexOf("\\")));
//            }

            int len = images.size();
            //numColumns为双数时 不能存入长度为单数的图片数组（会抹掉最后一张）
            PdfPTable table = new PdfPTable(2);
            for (int i = 0; i < len; i++) {
                if (images.get(i).toLowerCase().endsWith(".bmp")
                        || images.get(i).toLowerCase().endsWith(".jpg")
                        || images.get(i).toLowerCase().endsWith(".jpeg")
                        || images.get(i).toLowerCase().endsWith(".gif")
                        || images.get(i).toLowerCase().endsWith(".png")) {
                    String temp = imagesPath + "\\" + images.get(i);
                    Image img = Image.getInstance(temp);
                    PdfPCell cell = new PdfPCell();
                    cell.addElement(img);
                    if (i % 2 == 1) {
                        img.setAlignment(Image.RIGHT);
                    } else {
                    }
                    cell.setPadding(25f);
                    cell.setRowspan(2);
                    cell.setBorder(0);
                    table.addCell(cell);
                    table.setSplitLate(false);
                    table.setSplitRows(false);
                }
            }
            if(len%2==1){
                PdfPCell cell = new PdfPCell();
                Phrase phrase=new Phrase("");
                cell.addElement(phrase);
                cell.setPadding(25f);
                cell.setRowspan(2);
                cell.setBorder(0);
                table.addCell(cell);
                table.setSplitLate(false);
                table.setSplitRows(false);
            }
            document.add(table);

            document.newPage();
            // 第五步：关闭文档。
            document.close();

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return file;
    }

    public static void deleteFiles(String filePath) {
        File file = new File(filePath);
        String[] images = file.list();
        for (String img : images) {
            //连此文件夹里的PDF一起删除
            if (img.toLowerCase().endsWith(".bmp")
                    || img.toLowerCase().endsWith(".jpg")
                    || img.toLowerCase().endsWith(".jpeg")
                    || img.toLowerCase().endsWith(".gif")
                    || img.toLowerCase().endsWith(".png")
                    || img.toLowerCase().endsWith(".pdf")) {
                String temp = filePath + "\\" + img;
                File imgfile = new File(temp);
                imgfile.delete();
            }
        }
    }


    /*public static void main(String[] args) throws Exception {
        String name = "ttttttttt";
        String imagesPath = "D:\\Users\\Administrator\\IdeaProjects\\MyQrqd\\out";
        imagesToPdf(name, imagesPath);
    }*/


}