| //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); | 
| //    } | 
| //} |