如何在Java中利用iTextPDF生成一个PDF文件

发布时间:2021-02-24 15:17:06 作者:戴恩恩
来源:亿速云 阅读:223

这篇文章主要介绍了如何在Java中利用iTextPDF生成一个PDF文件,亿速云小编觉得不错,现在分享给大家,也给大家做个参考,一起跟随亿速云小编来看看吧!

Java可以用来干什么

Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页开发;5. 企业级应用开发;6. Java大数据开发;7.游戏开发等。

引入依赖

这里使用的是iText5

  <dependency>
   <groupId>com.itextpdf</groupId>
   <artifactId>itextpdf</artifactId>
   <version>5.5.10</version>
  </dependency>
  <dependency>
   <groupId>com.itextpdf</groupId>
   <artifactId>itext-asian</artifactId>
   <version>5.2.0</version>
  </dependency>

使用步骤简单介绍

快速入手iText拢共需要5步:

  1. 创建文档实例 Document

  2. 获取PdfWriter实例 (需要指定Document实例 和pdf 生成的磁盘路径)

  3. 打开文档

  4. 添加段落内容

  5. 关闭操作文档实例 (操作完成后必须执行文档关闭操作)

创建工具类

public class PdfUtil {
 // 标准字体
 public static Font NORMALFONT;
 // 加粗字体
 public static Font BOLDFONT;
 //固定高
 public static float fixedHeight = 27f;
 //间距
 public static int spacing = 5;

 static {
  try {
   BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
   NORMALFONT = new Font(bfChinese, 10, Font.NORMAL);
   BOLDFONT = new Font(bfChinese, 14, Font.BOLD);
  } catch (Exception e) {
   e.printStackTrace();
  }

 }

 public static Document createDocument() {
  //生成pdf
  Document document = new Document();
  // 页面大小
  Rectangle rectangle = new Rectangle(PageSize.A4);
  // 页面背景颜色
  rectangle.setBackgroundColor(BaseColor.WHITE);
  document.setPageSize(rectangle);
  // 页边距 左,右,上,下
  document.setMargins(20, 20, 20, 20);
  return document;
 }


 /**
  * @param text 段落内容
  * @return
  */
 public static Paragraph createParagraph(String text, Font font) {
  Paragraph elements = new Paragraph(text, font);
  elements.setSpacingBefore(5);
  elements.setSpacingAfter(5);
  elements.setSpacingAfter(spacing);
  return elements;
 }


 public static Font createFont(int fontNumber, int fontSize, BaseColor fontColor) {
  //中文字体 ----不然中文会乱码
  BaseFont bf = null;
  try {
   bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
   return new Font(bf, fontNumber, fontSize, fontColor);
  } catch (Exception e) {
   e.printStackTrace();
  }
  return new Font(bf, Font.DEFAULTSIZE, Font.NORMAL, BaseColor.BLACK);
 }

 /**
  * 隐藏表格边框线
  *
  * @param cell 单元格
  */
 public static void disableBorderSide(PdfPCell cell) {
  if (cell != null) {
   cell.disableBorderSide(1);
   cell.disableBorderSide(2);
   cell.disableBorderSide(4);
   cell.disableBorderSide(8);
  }
 }


 /**
  * 创建居中得单元格
  *
  * @return
  */
 public static PdfPCell createCenterPdfPCell() {
  PdfPCell cell = new PdfPCell();
  cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
  cell.setHorizontalAlignment(Element.ALIGN_CENTER);
  cell.setFixedHeight(fixedHeight);
  return cell;
 }

 /**
  * 创建指定文字得单元格
  *
  * @param text
  * @return
  */
 public static PdfPCell createCenterPdfPCell(String text, int rowSpan, int colSpan, Font font) {
  PdfPCell cell = new PdfPCell(new Paragraph(text, font));
  cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
  cell.setHorizontalAlignment(Element.ALIGN_LEFT);
  cell.setFixedHeight(fixedHeight);
  cell.setRowspan(rowSpan);
  cell.setColspan(colSpan);
  return cell;
 }

 /**
  * @param len 表格列数
  * @return
  */
 public static PdfPTable createPdfPTable(int len) {
  PdfPTable pdfPTable = new PdfPTable(len);
  pdfPTable.setSpacingBefore(5);
  pdfPTable.setHorizontalAlignment(Element.ALIGN_CENTER);
  return pdfPTable;
 }
}

创建controller进行测试

/**
 * @author Wang Guolong
 * @version 1.0
 * @date 2020/6/28 3:17 下午
 */
@RestController
@RequestMapping("/pdf")
public class PdfController {

 @RequestMapping("/generate")
 public Response generatePDF(HttpServletResponse response) throws Exception {
  String filename = "测试pdf";
  // 设置下载格式为pdf
  response.setContentType("application/x-download");
  response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8") + ".pdf");
  OutputStream os = new BufferedOutputStream(response.getOutputStream());

  // 1. Document document = new Document();
  Document document = PdfUtil.createDocument();
  // 2. 获取writer
  PdfWriter.getInstance(document, os);
  // 3. open()
  document.open();

  //设置字体
  Font blackFont = PdfUtil.createFont(10, Font.NORMAL, BaseColor.BLACK);
  Font blueFont = PdfUtil.createFont(10, Font.NORMAL, BaseColor.BLUE);
  Font bigFont = PdfUtil.createFont(14, Font.NORMAL, BaseColor.BLACK);
  Font littleFont = PdfUtil.createFont(10, Font.NORMAL, BaseColor.BLACK);

  Paragraph title = PdfUtil.createParagraph("测试pdf", bigFont);
  title.setAlignment(Element.ALIGN_CENTER);
  // 4. 添加段落内容
  document.add(title);
  // 5. close()
  document.close();
  os.close();
  return new Response().setContent("success");
 }
}

以上就是亿速云小编为大家收集整理的如何在Java中利用iTextPDF生成一个PDF文件,如何觉得亿速云网站的内容还不错,欢迎将亿速云网站推荐给身边好友。

推荐阅读:
  1. 如何在java中利用富文本生成pdf文件
  2. 如何在Java中利用icepdf将pdf文件按页转换为图片

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java itextpdf pdf

上一篇:使用python怎么编写一个自动生成sql语句的脚本

下一篇:如何在Java中自定义一个枚举类

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》