java填写pdf表单-按键精灵 表单填写
发布时间:2023-02-13 16:15   浏览次数:次   作者:佚名
          
          i文本介绍和描述
因为项目需要生成PDF文件java填写pdf表单,我去找了一个可以生成PDF的Java工具java填写pdf表单,看到iText可以说好评如潮。
如果您想通过Java操作PDF文件,那么iText绝对是您的首选。
引入依赖项
此处使用 iText5
        
            com.itextpdf 
            itextpdf 
            5.5.10 
         
        
            com.itextpdf 
            itext-asian 
            5.2.0 
         
使用步骤简介
快速开始使用 iText 总共需要 5 个步骤:
创建文档实例文档
获取 PdfWriter 实例(您需要指定文档实例和 pdf 生成的磁盘路径)。
打开文档
添加段落内容关闭操作文档
实例(必须在操作完成后执行文档关闭操作)。
创建实用程序类
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;
    }
}
创建用于测试的控制器
/**
 * @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");
    }
}
运行结果
下载页面:

下载的文件效果:


 
  
  
  当前位置:
当前位置:  上一篇
上一篇  
   
        
 
                 
                 
                 
              
              
             
              
              
             
              
              
            