导出world

use Maven & Spring Boot

个人案例open in new window

quartz_boot_vue/ dataCk

		<!-- https://mvnrepository.com/artifact/com.lowagie/itext -->
		<dependency>
			<groupId>com.lowagie</groupId>
			<artifactId>itext</artifactId>
			<version>2.1.7</version>
		</dependency>

		<dependency>
			<groupId>com.lowagie</groupId>
			<artifactId>itext-rtf</artifactId>
			<version>2.1.7</version>
		</dependency>

code



import java.awt.Color;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.demo.util.DocStyleUtils;
import com.lowagie.text.Cell;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.rtf.RtfWriter2;
import com.lowagie.text.rtf.style.RtfFont;


  /**
   * 导出word 表格
   * @param response
   * @param req
   * @throws DocumentException
   * @throws IOException
   */
  @RequestMapping(value = "export")
  public void export(HttpServletResponse response, HttpServletRequest req)
      throws DocumentException, IOException {


    // 以A4纸大小输出word
    Document doc = new Document(PageSize.A4);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    // 把word与输出流绑定
    RtfWriter2.getInstance(doc, baos);
    // 开始写入word,必须调用这个方法才能进行word的写入
    doc.open();


    // 加载额外字体的第一种方法:iText本身支持的字体少,这个时候可以使用系统自带的字体
  /*  FontFactory.register("C:\\WINDOWS\\Fonts\\simsun.ttc");


   *//* // 这是另一种加载字体的方法,把字体文件放到webapp下,防止某些电脑并没有第一种方法中的字体.
    String realPath = req.getSession().getServletContext().getRealPath("/") + "font/";
    FontFactory.register(realPath + "FZSTK.TTF"); // 方正舒体
    FontFactory.register(realPath + "simfang.ttf"); // simfang
    FontFactory.register(realPath + "simhei.ttf");  // 黑体
    FontFactory.register(realPath + "simkai.ttf");*//*


    // 对字体文件右键查看详细信息的标题,可以获取getFont方法中第一个参数的字符串.
    // 第二个参数不用管是编码集, 第三个参数是字体大小
    Font titlefont = FontFactory.getFont("simsun", BaseFont.WINANSI, 14);*/
    BaseFont bfChinese = BaseFont.createFont();
    //        BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
    // 标题字体风格
    Font titlefont = new Font(bfChinese, 12, Font.BOLD);
    // 设置字体大小
    titlefont.setSize(14);
    //  设置字体格式,只能设置一种格式
    titlefont.setStyle(Font.BOLD);
    // 设置字体的重载方法,可以传递多种样式,比如加粗倾斜
    titlefont.setStyle("bold, italic");
    // 加入一个段落,第一个参数是段落内容,第二个是字体
    Paragraph paragraph = new Paragraph("第一个段落", titlefont);
    // 设置段落的首行缩进
    paragraph.setFirstLineIndent(50);
    // 设置段落的段前间距,单位是float,这里与word本身不同不是磅值是厘米
    paragraph.setSpacingBefore(5);
    // 设置段落的段后间距,单位是float,这里与word本身不同不是磅值是厘米
    paragraph.setSpacingAfter(5);
    // 设置段落的右侧间距
    paragraph.setIndentationRight(30);
    // 设置段落的左侧间距
    paragraph.setIndentationLeft(30);
    // 将段落添加到word
    doc.add(paragraph);


    // 申明一个6行的表格
    Table table = new Table(6);
    // 设置表格宽度
    table.setBorderWidth(1);
    // 设置表格每行的单元格的宽度,数组的长度表明了每行的单元格数量
    int[] widths = {10, 13, 13, 15, 15, 15};
    // 设置每行的单元格
    table.setWidths(widths);
    // 设置表格所占的%
    table.setWidth(91);
    // 设置表格的对齐方式
    table.setAlignment(Element.ALIGN_MIDDLE);
    table.setAlignment(Element.ALIGN_CENTER);




    for (int j = 0; j < 6; j++) {
      for (int i = 0; i < 6; i++) {
        // 申明一个单元格,Phrase表示单元格内容,参数1是单元格的文本内容,参数2是字体
        Cell cell = new Cell(new Phrase("content" + i, titlefont));
        // 水平对齐方式
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        // 垂直对齐方式
        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        // 将单元格插入到表格
        table.addCell(cell);
      }
    }


    // 将表格添加到word
    doc.add(table);


    //添加图片
   /* Image img = null;
    String imgUrl = "d://dog.png";
    if(!StringUtils.isEmpty(imgUrl)){
      try {
        // 这个方法用于获取图片,可以传递图片的路径,或者可以传递图片的byte[]内容
        img = Image.getInstance(imgUrl);
        // 设置图片大小
        img.scaleAbsolute(180, 180);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }


    doc.add(img);*/
    // 关闭word文档对象,调用这个方法之后就无法添加内容到这个doc对象了.
    doc.close();


    String fileName =  "测试.doc";
    response.setContentType("application/msword;charset=UTF-8");
    response.setHeader("Content-Disposition",
        "attachment; filename=" + new String(fileName.getBytes("gb2312"), "ISO8859-1"));
    // 得到输入流
    try (OutputStream os = response.getOutputStream()) {
      //这个是spring的工具类 ,是下面注释代码的实现
      StreamUtils.copy(baos.toByteArray(), os);

           /*
            ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
            baos.close();
            os = response.getOutputStream();
            byte[] b = new byte[10240];
            int length;
            while ((length = bais.read(b))> 0)
              os.write(b, 0, length);
            os.flush();
            os.close();
            bais.close();*/
    } catch (Exception e) {
     }
  }

复杂导出World

  @RequestMapping(value = "exss")
  public void createDocContext( HttpServletResponse response, HttpServletRequest req, String contextString)
      throws DocumentException, IOException {
    // 设置纸张大小
    Document document = new Document(PageSize.A4);
    // 建立一个书写器,与document对象关联
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    RtfWriter2.getInstance(document,baos);
    document.open();


    document.setMargins(90f, 90f, 72f, 72f);
    // 设置标题字体样式:方正小标宋_GBK、二号、粗体
    // Font tFont= DocStyleUtils.setFontStyle("方正小标宋_GBK", 22, Font.BOLD);
    RtfFont tFont = new RtfFont("方正小标宋_GBK", 22, Font.BOLD, Color.BLACK);
    // 设置正文字体样式:仿宋_GB2312、三号、常规
    // Font cFont = DocStyleUtils.setFontStyle("仿 宋_GB2312", 16f, Font.NORMAL);
    // 设置中文字体
    BaseFont bfChinese = BaseFont.createFont();
    //        BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
    // 标题字体风格
    Font titleFont = new Font(bfChinese, 12, Font.BOLD);
    // 正文字体风格
    Font contextFont = new Font(bfChinese, 10, Font.NORMAL);
    // -----------
    // 构建标题
    Font cFont = DocStyleUtils.setFontStyle("仿 宋", 16f, Font.NORMAL);
    Paragraph title =
        DocStyleUtils.setParagraphStyle(
            "配电线路故障周报第十二期(03月27日00时—04月03日00时)", tFont, 12f, Paragraph.ALIGN_CENTER);
    // 构建[接收单位]
    Paragraph jsdw =
        DocStyleUtils.setParagraphStyle(
            "【接收单位】", /*DocStyleUtils.setFontStyle("黑 体", 18f, Font.BOLD)*/
            new RtfFont("黑 体", 18f, Font.NORMAL, Color.BLACK),
            32f,
            1.2f);
    // [接收单位内容]
    StringBuffer sb = new StringBuffer();
    sb.append("公司各单位,hwhwhwhwh院");
    Paragraph jsdwnr = DocStyleUtils.setParagraphStyle(sb.toString(), cFont, 32f, 1.2f);
    // 构建【通报内容】
    Paragraph tbnr =
        DocStyleUtils.setParagraphStyle(
            "【通报内容】", /* DocStyleUtils.setFontStyle("黑 体", 18f, Font.BOLD)*/
            new RtfFont("黑 体", 18f, Font.NORMAL, Color.black),
            32f,
            1.2f);
    tbnr.setLeading(30f);
    // 一、总体情况
    Paragraph ztqk =
        DocStyleUtils.setParagraphStyle(
            " 一、总体情况", DocStyleUtils.setFontStyle("方正黑体_GBK", 16f, Font.BOLD), 32f, 1.2f);
    StringBuffer finalResult = new StringBuffer();
    finalResult.append(
        "除了手机上的鸿蒙系统外,华为还将带来搭载鸿蒙系统的MatePadPro2,根据曝光它将会配备12.9英寸120Hz的OLED显示屏,渲染图显示它相较于前代屏幕边框更窄,有着很高的屏占比,5G版本搭载麒麟9000芯片,WiFi版则搭载麒麟9000E,支持40W有线快充和27W无线充电。另外,据说还有个12.2英寸的版本,屏幕会有所不同。\n"
            + "\n"
            + "由于受到美国的制裁,华为在手机等硬件市场遭遇了重创,而鸿蒙系统则是它们开辟的一条面向未来的全新赛道,目前尚处于起步阶段,除了要不断完善系统,覆盖更多类型的终端设备外,还需要配套的软件体系,形成相对完整的生态,并且仅靠自身的设备肯定是不够的,还得邀请更多合作伙伴融入鸿蒙系统的体系,一同绘制万物互联的蓝图。。");
    Paragraph p1Content = DocStyleUtils.setParagraphStyle(finalResult.toString(), cFont, 32f, 1.2f);
    // --------------------------------------
    // Paragraph title = new Paragraph("标题");
    // 设置标题格式对齐方式
    title.setAlignment(Element.ALIGN_CENTER);
    title.setFont(titleFont);


    Paragraph context = new Paragraph(contextString);
    context.setAlignment(Element.ALIGN_LEFT);
    context.setFont(contextFont);
    // 段间距
    context.setSpacingBefore(3);
    // 设置第一行空的列数
    context.setFirstLineIndent(20);


    // 设置Table表格,创建一个三列的表格
    Table table = new Table(3);
    int width[] = {25, 25, 50}; // 设置每列宽度比例
    table.setWidths(width);
    table.setWidth(90); // 占页面宽度比例
    table.setAlignment(Element.ALIGN_CENTER); // 居中
    table.setAlignment(Element.ALIGN_MIDDLE); // 垂直居中
    table.setAutoFillEmptyCells(true); // 自动填满
    table.setBorderWidth(1); // 边框宽度
    // 设置表头
    Cell haderCell = new Cell("表格表头");
    haderCell.setHeader(true);
    haderCell.setColspan(3);
    table.addCell(haderCell);
    table.endHeaders();


    Font fontChinese = new Font(bfChinese, 12, Font.NORMAL, Color.GREEN);
    Cell cell1 = new Cell(new Paragraph("这是一个3*3测试表格数据", fontChinese));
    cell1.setVerticalAlignment(Element.ALIGN_MIDDLE);
    table.addCell(cell1);
    table.addCell(new Cell("#1"));
    table.addCell(new Cell("#2"));
    table.addCell(new Cell("#3"));
    try {
      document.add(title);
      document.add(context);
      
      document.add(jsdw);
      document.add(jsdwnr);
      document.add(tbnr);
      document.add(ztqk);


    } catch (DocumentException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    //    字体文档样式
    // [接收单位内容]
    Font ccFont = DocStyleUtils.setFontStyle("仿 宋", 22f, Font.NORMAL);
    StringBuffer sbs = new StringBuffer();
    sbs.append("华为在2019年8月份的开发者大会上正式推出了操作系统鸿蒙OS,它是一款面向全场景的分布式操作系统,创造一个超级虚拟终端互联的世界,将人、设备、场景有机地联系在一起,将消费者在全场景生活中接触的多种智能终端实现极速发现、极速连接、硬件互助、资源共享,用最合适的设备提供最佳的场景体验。2020年9月时升级到了鸿蒙OS2.0版本。···\n" + "很多字打出来就被和谐。。。\n" + "内容 和4L 差不多的意思。");
    Paragraph wordFile = DocStyleUtils.setParagraphStyle(sbs.toString(), ccFont, 32f, 1.2f);


    StringBuffer sbs1 = new StringBuffer();
    sbs1.append(" 目前已经有华为自家的电视、车机以及其它品牌的家电设备等搭载了鸿蒙系统,而本次发布会华为将让鸿蒙系统覆盖更多品类的终端设备,首先就是适配手机设备的鸿蒙系统,预计首批升级鸿蒙系统的产品将会有Mate40、Mate40Pro、Mate40Pro+、Mate40RS、MateX2、nova8、nova8Pro、MatePadPro,未来应该会开放更多设备进行升级。华为消费者业务CEO余承东在去年的年度旗舰新品发布盛典上表示,华为在网手机超过7亿台,因此作为全场景智慧生态的入口,手机是华为鸿蒙系统布局非常重要的一部分,华为肯定会尽力让更多产品升级鸿蒙系统。");
    Paragraph fs = DocStyleUtils.setParagraphStyle(sbs1.toString(), ccFont, 32f, 1.2f);


    document.add(wordFile);
    document.add(fs);
    // 表格----------------------------
    BaseFont bcFont =
        BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);


    Font tableNameFont = new Font(bcFont, 16, Font.BOLD);
    Font cellHeadFont = new Font(bcFont, 12, Font.BOLD);
    Paragraph tablename1 =
        DocStyleUtils.setParagraphStyle("各单位线路故障情况统计", tableNameFont, 0.1f, Paragraph.ALIGN_CENTER);
    tablename1.setLeading(0, 0);
    tablename1.setSpacingAfter(0);
    Font cellFont = new Font(bcFont, 12, Font.NORMAL);
    try {
      // 创建一 表格(必须指定列,也可指定列和行)


      Table table1 = new Table(7);


      table1.setAlignment(Element.ALIGN_CENTER);
      table1.setWidth(100f);
      // table1.setBorderWidthTop(0);
      table1.setCellsFitPage(true);
      table1.setBorderWidthTop(0);
      table1.setTop(0);


      table1.setOffset(0);
      // 设置每列所占比例
      int[] withs = {3, 3, 3, 3, 3, 4, 3};
      try {
        table1.setWidths(withs);
      } catch (DocumentException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
      }
      // 表头
      Cell[] cellHeaders = new Cell[7];


      // RtfFont cellFont = new RtfFont("仿宋_GB2312",9,Font.NORMAL,Color.BLACK);


      cellHeaders[0] = new Cell(new Phrase("序号", cellHeadFont));
      cellHeaders[1] = new Cell(new Phrase("单位", cellHeadFont));
      cellHeaders[2] = new Cell(new Phrase("重合不良", cellHeadFont));
      cellHeaders[3] = new Cell(new Phrase("重合良好", cellHeadFont));
      cellHeaders[4] = new Cell(new Phrase("接地故障", cellHeadFont));
      cellHeaders[5] = new Cell(new Phrase("分支线停电", cellHeadFont));
      cellHeaders[6] = new Cell(new Phrase("合计", cellHeadFont));


      for (int i = 0; i <= 6; i++) {
        // 居中显示
        cellHeaders[i].setHorizontalAlignment(Element.ALIGN_CENTER);
        // 纵向居中显示
        cellHeaders[i].setVerticalAlignment(Element.ALIGN_MIDDLE);
        table1.addCell(cellHeaders[i]);
      }


      // 第二行合并跨越
      Cell cell001 = new Cell(new Phrase("tjdwmc提交单位名称", cellFont));
      cell001.setColspan(2);
      cell001.setHorizontalAlignment(Element.ALIGN_CENTER);
      cell001.setVerticalAlignment(Element.ALIGN_MIDDLE);
      table1.addCell(cell001);


      Cell[] cellFirstRow = new Cell[5];


      cellFirstRow[0] = new Cell(new Phrase(String.valueOf("chblSum"), cellFont));
      cellFirstRow[1] = new Cell(new Phrase(String.valueOf("chlhSum"), cellFont));
      cellFirstRow[2] = new Cell(new Phrase(String.valueOf("jdgzSum"), cellFont));
      cellFirstRow[3] = new Cell(new Phrase(String.valueOf("fzxtdSum"), cellFont));
      cellFirstRow[4] =
          new Cell(new Phrase(String.valueOf("chblSum+chlhSum+jdgzSum+fzxtdSum"), cellFont));


      for (int i = 0; i < cellFirstRow.length; i++) {
        // 居中显示
        cellFirstRow[i].setHorizontalAlignment(Element.ALIGN_CENTER);
        // 纵向居中显示
        cellFirstRow[i].setVerticalAlignment(Element.ALIGN_MIDDLE);
        table1.addCell(cellFirstRow[i]);
      }


      int i = 0;
      for (int j = 0; j < 5; j++) {
        i = i + 1;


        Cell[] cell = new Cell[7];
        cell[0] = new Cell(new Phrase(String.valueOf(i), cellFont));
        cell[1] = new Cell(new Phrase(String.valueOf("map.get()"), cellFont));
        cell[2] = new Cell(new Phrase(String.valueOf("map.get(  重合不良 )"), cellFont));
        cell[3] = new Cell(new Phrase(String.valueOf("所发生的"), cellFont));
        cell[4] = new Cell(new Phrase(String.valueOf("接地故障"), cellFont));
        cell[5] = new Cell(new Phrase(String.valueOf("分支线停电"), cellFont));
        cell[6] =
            new Cell(
                new Phrase(
                    String.valueOf(
                        Integer.valueOf(30)
                            + Integer.valueOf(10)
                            + Integer.valueOf(11)
                            + Integer.valueOf(11)),
                    cellFont));
        for (int k = 0; k < cell.length; k++) {
          // 居中显示
          cell[k].setHorizontalAlignment(Element.ALIGN_CENTER);
          // 纵向居中显示
          cell[k].setVerticalAlignment(Element.ALIGN_MIDDLE);
          table1.addCell(cell[k]);
        }
      }


      document.add(tablename1);
      document.add(table1);
      document.add(table);
      document.add(p1Content);
      document.close();
    } catch (DocumentException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }


    // 导出Zip


    String fileName =  "sdfsdf测试Word.doc";
    response.setContentType("application/msword;charset=UTF-8");
    response.setHeader("Content-Disposition",
        "attachment; filename=" + new String(fileName.getBytes("gb2312"), "ISO8859-1"));
    // 得到输入流
    try (OutputStream os = response.getOutputStream()) {
      //这个是spring的工具类 ,是下面注释代码的实现
      StreamUtils.copy(baos.toByteArray(), os);


           /*
            ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
            baos.close();
            os = response.getOutputStream();
            byte[] b = new byte[10240];
            int length;
            while ((length = bais.read(b))> 0)
              os.write(b, 0, length);
            os.flush();
            os.close();
            bais.close();*/
    } catch (Exception e) {
    }
  }

StyleUtils

package com.example.demo.util;

import com.lowagie.text.Chunk;
import com.lowagie.text.Font;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import java.awt.Color;

public class DocStyleUtils {

	/**
	 * 功能说明:设置字体的样式,颜色为黑色</BR>
	 * 修改日期:2021-04-27
	 * 
	 * @author hzqq
	 * @param family 字体类型
	 * @param size   字体大小,22f为二号,18f为小二号,16f为三号
	 * @param style  字体样式
	 * @return
	 */
	public static Font setFontStyle(String family, float size, int style) {
		return setFontStyle(family, Color.BLACK, size, style);
	}

	/**
	 * 功能说明:设置字体的样式</BR>
	 * 修改日期:2021-04-27
	 * 
	 * @author hzqq
	 * @param family 字体类型
	 * @param color  字体颜色
	 * @param size   字体大小,22f为二号,18f为小二号,16f为三号
	 * @param style  字体样式
	 * @return
	 */
	public static Font setFontStyle(String family, Color color, float size, int style) {
		Font font = new Font();
		font.setFamily(family);
		font.setColor(color);
		font.setSize(size);
		font.setStyle(style);
		return font;
	}

	/**
	 * 功能说明:为文字填充浅灰色背景</BR>
	 * 修改日期:2021-04-27
	 * 
	 * @author hzqq
	 * @param content   需要填充背景颜色的内容
	 * @param appendStr 不需要填充背景颜色的内容
	 * @return
	 */
	private static Phrase setPhraseStyle(String content, String appendStr) {
		Chunk chunk = new Chunk(content);
		// 填充的背景颜色为浅灰色
		chunk.setBackground(Color.LIGHT_GRAY);
		Phrase phrase = new Phrase(chunk);
		phrase.add(appendStr);
		return phrase;
	}

	/**
	 * 功能说明:设置段落的样式,设置前半截内容和后半截内容格式不一样的段落样式</BR>
	 * 修改日:2021-04-27
	 * 
	 * @author hzqq
	 * @param content         前半截内容
	 * @param font            字体的样式
	 * @param firstLineIndent 首行缩进多少字符,16f约等于一个字符
	 * @param appendStr       后半截内容
	 * @return
	 */
	public static Paragraph setParagraphStyle(String content, Font font, float firstLineIndent, String appendStr) {
		Paragraph par = setParagraphStyle(content, font, 0f, 12f);
		Phrase phrase = new Phrase();
		phrase.add(par);
		phrase.add(appendStr);
		Paragraph paragraph = new Paragraph(phrase);
		paragraph.setFirstLineIndent(firstLineIndent);
		// 设置对齐方式为两端对齐
		paragraph.setAlignment(Paragraph.ALIGN_JUSTIFIED_ALL);
		return paragraph;
	}

	/**
	 * 功能说明:设置段落的样式,设置前半截内容填充了浅灰色的背景颜色,后半截内容没有背景颜色的段落样式</BR>
	 * 修改日期:2021-04-27
	 * 
	 * @author hzqq
	 * @param content         前半截有背景颜色的内容
	 * @param font            字体的样式
	 * @param firstLineIndent 首行缩进的字符,16f约等于一个字符
	 * @param leading         行间距12f表示单倍行距
	 * @param appendStr       后半截内容
	 * @return
	 */
	public static Paragraph setParagraphStyle(String content, Font font, float firstLineIndent, float leading,
			String appendStr) {
		Phrase phrase = setPhraseStyle(content, appendStr);
		Paragraph par = new Paragraph(phrase);
		par.setFont(font);
		par.setFirstLineIndent(firstLineIndent);
		par.setLeading(leading);
		// 设置对齐方式为两端对齐
		par.setAlignment(Paragraph.ALIGN_JUSTIFIED_ALL);
		return par;
	}

	/**
	 * 功能说明:设置段落的样式,一般用于设置标题</BR>
	 * 修改日期:2021-04-27
	 * 
	 * @author hzqq
	 * @param content   段落的内容
	 * @param font      字体样式
	 * @param leading   行间距
	 * @param alignment 对齐方式
	 * @return
	 */
	public static Paragraph setParagraphStyle(String content, Font font, float leading, int alignment) {
		return setParagraphStyle(content, font, 0f, leading, 0f, alignment);
	}

	/**
	 * 功能说明:设置段落的样式,对齐方式为两端对齐,缩进样式是文本之后0.2毫米</BR>
	 * 修改日期:2021-04-27
	 * 
	 * @author hzqq
	 * @param content         段落的内容
	 * @param font            字体的样式
	 * @param firstLineIndent 首行缩进多少字符,16f约等于一个字符
	 * @param leading         行间距
	 * @return
	 */
	public static Paragraph setParagraphStyle(String content, Font font, float firstLineIndent, float leading) {
		return setParagraphStyle(content, font, firstLineIndent, leading, 0.6f, Paragraph.ALIGN_JUSTIFIED_ALL);
	}

	/**
	 * 功能说明:设置段落的样式</BR>
	 * 修改日期:2021-04-27
	 * 
	 * @author hzqq
	 * @param content          段落的内容
	 * @param font             字体的样式
	 * @param firstLineIndent  首行缩进多少字符,16f约等于一个字符
	 * @param leading          行间距
	 * @param indentationRight 缩进样式中的文本之后多少毫米,0.6f相当于0.2毫米
	 * @param alignment        对齐方式
	 * @return
	 */
	public static Paragraph setParagraphStyle(String content, Font font, float firstLineIndent, float leading,
			float indentationRight, int alignment) {
		Paragraph par = new Paragraph(content, font);
		par.setFirstLineIndent(firstLineIndent);
		par.setLeading(leading);
		par.setIndentationRight(indentationRight);
		par.setAlignment(alignment);
		return par;
	}
}