Java生成PDF的两种方法

Java生成PDF的两种方法,以生成表格为例

一、通过e-iceblue的jar包

 //加载Excel(需要先生成excel文件,过程略)
 Workbook wb = new Workbook();
 wb.loadFromFile(filePath + fileName + ".xls");
 //只转换第一个sheet
 Worksheet worksheet = wb.getWorksheets().get(0);
 //设置保存路径和文件名,转换为PDF
 worksheet.saveToPdf(filePath + fileName + ".pdf");


        
            e-iceblue
            spire.xls.free
            3.9.1
        

    
        
            com.e-iceblue
            http://repo.e-iceblue.cn/repository/maven-public/
        
    

1.优点

代码简单简洁,适合数据较少的表格

2.缺点

免费版jar包生成的页数和行数都有限制,收费版不清楚

二、通过itextpdf的jar包

       try {
            //创建文件
            Document document = new Document();
            //设置字体
            BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
            //PDF的目录
            String filePath = "/data/pdf/";
            String fileName = "itextPdf-" + System.currentTimeMillis();
            //创建PDF
            PdfWriter writer = PdfWriter.getInstance(document, new 
            FileOutputStream(filePath + fileName + ".pdf"));
            // 设置页面布局
            writer.setViewerPreferences(PdfWriter.PageLayoutOneColumn);
            //打开文件
            document.open();
            //段落的间距
            Paragraph paragraph = new Paragraph(15);
            //对齐方式     1 2 3代表中右左
            paragraph.setAlignment(3);
            //字体
            Font fontHeader = new Font(bfChinese);
            //字体大小
            fontHeader.setSize(10);
            //设置段落字体
            paragraph.setFont(fontHeader);
            Chunk chunk1 = new Chunk("xxxx内容xxxx");
            paragraph.add(chunk1);
            document.add(paragraph);
            //字体
            Font fontTable = new Font(bfChinese);
            //字体大小
            fontTable.setSize(8);
            // 创建一个table并指定列数
            PdfPTable table = new PdfPTable(16);
            table.setHorizontalAlignment(3);
            table.setWidthPercentage(100);
            // 创建单元格对象,单元格满列后自动换行
            PdfPCell cell = new PdfPCell(new Paragraph("单元格内容", fontTable));
            table.addCell(cell);
            //跨页处理
            table.setSplitLate(false);
            table.setSplitRows(true);
            // 表格添加到PDF文件中
            document.add(table);
            //关闭文档
            document.close();
            //关闭书写器
            writer.close();
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }



        
            com.itextpdf
            itextpdf
            5.5.10
        
        
            com.itextpdf
            itext-asian
            5.2.0
        

1.优点

代码灵活,方便自由设置,对pdf数据量没有什么限制

2.缺点

代码复杂一点

你可能感兴趣的:(Java生成PDF的两种方法)