美文网首页
itext pdf文档生成

itext pdf文档生成

作者: 前端进城打工仔 | 来源:发表于2017-01-16 17:03 被阅读0次

    在日常开发过程中,若是想要把java中的某个对象中的内容,按某种排列方式输出到PDF中,有几种方式,此处只使用了itextpdf的方式。
    itext pdf 文档

    一、加入依赖

    在gradle中只需要加入

    compile group: 'com.itextpdf', name: 'itextpdf', version: '5.5.6'
    

    二、创建一个Document,并加入内容

    public void createPdf() {
            Document document = new Document();
            try {
                PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("HelloWorld.pdf"));
                document.open();
                document.add(new Paragraph("Some content here"));
                settings(document);            
                style(document);
                document.close();
                writer.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (DocumentException e) {
                e.printStackTrace();
            }
        }
    

    新建一个Document对象,再定义PdfWriter,把document中的内容写入HelloWorld.pdf文件。
    在添加内容到document之前需要执行document.open()才可以。
    document可以添加Paragraph、PdfPTable等元素。

    三、踩过的坑

    • 问题:使用PdfPTable来构造整体结构时,如何设置行间距?
      解决方案:在给cell中添加内容的时候有两种方式,一种是直接初始化的时候添加,另一种是调用addElement方法添加内容。
    PdfPCell cell = new PdfPCell(new Paragraph(100,"Table 1"));
    
    PdfPCell cell= new PdfPCell();
    cell.addElement(new Paragraph(100,"Table 1"));
    

    这两种方法中第一种不支持设置Leading为100,第二种方法支持设置Leading为100。除了在初始化Paragraph时可以设置Leading,还可以调用setLeading()来设置,第一个参数是固定的行间距,第二个参数是行间距为行高的倍数。

    Paragraph element = new Paragraph("Some content here");
    element.setLeading(0,2);
    
    • 问题:如何给PdfPTable设置每列的宽度?
      解决方案:设置table的列宽时,需要把所有列的宽度放进数组列表中,缺一不可,如果数组的大小和table的列数不匹配则整体都不会显示出来。
    PdfPTable table = new PdfPTable(3);
    table.setWidths(new int[]{2, 1, 1});
    
    • 问题:如何设置边框?
      解决方案:边框的值不一样,当setBorder()函数的参数为0时,没有边框,1为上边框TOP,2为下边框BOTTOM,4为左边框LEFT,8为右边框RIGHT。具体的可以调用Rectangle中的固定值。
    PdfPCell cell = new PdfPCell(new Phrase("StackOverflow"));
    cell.setBorder(Rectangle.NO_BORDER);
    

    相关文章

      网友评论

          本文标题:itext pdf文档生成

          本文链接:https://www.haomeiwen.com/subject/rdlpbttx.html