package com.doumee.core.utils;//package com.doumee.core.utils; 
 | 
// 
 | 
//import java.awt.image.BufferedImage; 
 | 
//import java.io.ByteArrayOutputStream; 
 | 
//import java.io.File; 
 | 
//import java.io.FileOutputStream; 
 | 
//import java.io.IOException; 
 | 
//import java.net.URL; 
 | 
//import java.util.stream.IntStream; 
 | 
//import javax.imageio.ImageIO; 
 | 
//import org.apache.poi.ss.usermodel.Cell; 
 | 
//import org.apache.poi.ss.usermodel.Row; 
 | 
//import org.apache.poi.ss.usermodel.Sheet; 
 | 
//import org.apache.poi.ss.usermodel.Workbook; 
 | 
//import org.apache.poi.ss.usermodel.WorkbookFactory; 
 | 
//import org.apache.poi.xssf.usermodel.XSSFClientAnchor; 
 | 
//import org.apache.poi.xssf.usermodel.XSSFDrawing; 
 | 
//import org.apache.poi.xssf.usermodel.XSSFGraphicFrame; 
 | 
//import org.apache.poi.xssf.usermodel.XSSFShape; 
 | 
//import org.apache.poi.xssf.usermodel.XSSFSheet; 
 | 
//import org.apache.poi.xssf.usermodel.XSSFWorkbook; 
 | 
//import com.itextpdf.text.BaseColor; 
 | 
//import com.itextpdf.text.Document; 
 | 
//import com.itextpdf.text.DocumentException; 
 | 
//import com.itextpdf.text.Element; 
 | 
//import com.itextpdf.text.Font; 
 | 
//import com.itextpdf.text.Image; 
 | 
//import com.itextpdf.text.PageSize; 
 | 
//import com.itextpdf.text.Paragraph; 
 | 
//import com.itextpdf.text.pdf.PdfPCell; 
 | 
//import com.itextpdf.text.pdf.PdfPTable; 
 | 
//import com.itextpdf.text.pdf.PdfWriter; 
 | 
// 
 | 
//public class TestUtil { 
 | 
//    public static void main(String[] args) { 
 | 
//        try (Workbook workbook = WorkbookFactory.create(new File("example.xlsx")); 
 | 
//            FileOutputStream fos = new FileOutputStream("example.pdf")) { 
 | 
//            Document document = new Document(PageSize.A4, 50, 50, 50, 50); 
 | 
//            PdfWriter writer = PdfWriter.getInstance(document, fos); 
 | 
//            document.open(); 
 | 
//            for (Sheet sheet : workbook) { 
 | 
//                PdfPTable table = new PdfPTable(sheet.getRow(0).getLastCellNum()); 
 | 
//                table.setHeaderRows(1); 
 | 
//                table.setWidths(IntStream.range(0, sheet.getRow(0).getLastCellNum()).mapToDouble(i -> 1).toArray()); 
 | 
//                table.setWidthPercentage(100); 
 | 
//                Paragraph title = new Paragraph(sheet.getSheetName(), new Font(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), 16, Font.BOLD)); 
 | 
//                title.setAlignment(Element.ALIGN_CENTER); 
 | 
//                document.add(title); 
 | 
//                sheet.forEach(row -> { 
 | 
//                    IntStream.range(0, row.getLastCellNum()).forEach(i -> { 
 | 
//                        Cell cell = row.getCell(i); 
 | 
//                        PdfPCell pdfCell = null; 
 | 
//                        try { 
 | 
//                            pdfCell = new PdfPCell(new Paragraph(cell.getStringCellValue(), new Font(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), 12))); 
 | 
//                        } catch (DocumentException e) { 
 | 
//                            throw new RuntimeException(e); 
 | 
//                        } catch (IOException e) { 
 | 
//                            throw new RuntimeException(e); 
 | 
//                        } 
 | 
//                        pdfCell.setBorderWidth(1f); 
 | 
//                        pdfCell.setBorderColor(BaseColor.BLACK); 
 | 
//                        pdfCell.setPadding(5f); 
 | 
//                        if (row.getRowNum() == 0) { 
 | 
//                            pdfCell.setBackgroundColor(BaseColor.LIGHT_GRAY); 
 | 
//                        } 
 | 
//                        table.addCell(pdfCell); 
 | 
//                        if (cell.getCellType() == CellType.BLANK || cell.getCellType() == CellType.FORMULA || cell.getCellType() == CellType.ERROR || cell.getCellType() == CellType.STRING && cell.getStringCellValue().trim().isEmpty() || cell.getCellType() == CellType.NUMERIC && cell.getNumericCellValue() == 0 || cell.getCellType() == CellType.BOOLEAN && !cell.getBooleanCellValue() || cell.getCellType() == CellType.STRING && cell.getStringCellValue().startsWith("#") || cell.getCellType() == CellType.FORMULA && cell.getCellFormula().startsWith("#") || cell.getCellType() == CellType.STRING && cell.getStringCellValue().startsWith("=") || cell.getCellType() == CellType.FORMULA && cell.getCellFormula().startsWith("=") || cell.getCellType() == CellType.STRING && cell.getStringCellValue().startsWith("@") || cell.getCellType() == CellType.FORMULA && cell.getCellFormula().startsWith("@") || cell.getCellType() == CellType.STRING && cell.getStringCellValue().startsWith("'") || cell.getCellType() == CellType.FORMULA && cell.getCellFormula().startsWith("'")) { 
 | 
//                            return; 
 | 
//                        } 
 | 
//                        if (cell.getCellType() == CellType.STRING && cell.getStringCellValue().startsWith("http")) { 
 | 
//                            try { 
 | 
//                                BufferedImage image = ImageIO.read(new URL(cell.getStringCellValue())); 
 | 
//                                if (image != null) { 
 | 
//                                    addImageToTable(table, image); 
 | 
//                                } 
 | 
//                            } catch (Exception e) { 
 | 
//                                e.printStackTrace(); 
 | 
//                            } 
 | 
//                        } else { 
 | 
//                            if (sheet instanceof XSSFSheet) { 
 | 
//                                XSSFSheet xssfSheet = (XSSFSheet) sheet; 
 | 
//                                XSSFDrawing drawing = xssfSheet.createDrawingPatriarch(); 
 | 
//                                for (XSSFShape shape : drawing.getShapes()) { 
 | 
//                                    if (shape instanceof XSSFClientAnchor) { 
 | 
//                                        XSSFClientAnchor anchor = (XSSFClientAnchor) shape.getAnchor(); 
 | 
//                                        if (anchor.getRow1() == cell.getRowIndex() && anchor.getCol1() == cell.getColumnIndex()) { 
 | 
//                                            if (shape instanceof XSSFGraphicFrame) { 
 | 
//                                                XSSFGraphicFrame frame = (XSSFGraphicFrame) shape; 
 | 
//                                                BufferedImage image = frame.getGraphic().getBufferedImage(); 
 | 
//                                                try { 
 | 
//                                                    addImageToTable(table, image); 
 | 
//                                                } catch (Exception e) { 
 | 
//                                                    throw new RuntimeException(e); 
 | 
//                                                } 
 | 
//                                            } 
 | 
//                                        } 
 | 
//                                    } 
 | 
//                                } 
 | 
//                            } 
 | 
//                        } 
 | 
//                    }); 
 | 
//                }); 
 | 
//                table.setSpacingBefore(20f); 
 | 
//                table.setSpacingAfter(20f); 
 | 
//                table.setKeepTogether(true); 
 | 
//                document.add(table); 
 | 
//            } 
 | 
//            document.close(); 
 | 
//        } catch (Exception e) { 
 | 
//            e.printStackTrace(); 
 | 
//        } 
 | 
//    } 
 | 
// 
 | 
//    private static void addImageToTable(PdfPTable table, BufferedImage image) throws Exception { 
 | 
//        ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
 | 
//        ImageIO.write(image, "png", baos); 
 | 
//        baos.flush(); 
 | 
//        byte[] imageData = baos.toByteArray(); 
 | 
//        baos.close(); 
 | 
//        Image pdfImage = Image.getInstance(imageData); 
 | 
//        pdfImage.scaleToFit(100f, 100f); 
 | 
//        PdfPCell imageCell = new PdfPCell(pdfImage, true); 
 | 
//        imageCell.setBorderWidth(1f); 
 | 
//        imageCell.setBorderColor(BaseColor.BLACK); 
 | 
//        imageCell.setPadding(5f); 
 | 
//        table.addCell(imageCell); 
 | 
//    } 
 | 
//} 
 |