返回顶部
首页 > 资讯 > 后端开发 > JAVA >java导出pdf(纯代码实现)
  • 555
分享到

java导出pdf(纯代码实现)

javapdf开发语言 2023-08-17 13:08:20 555人浏览 泡泡鱼
摘要

java导出pdf 在项目开发中,产品的需求越来越奇葩啦,开始文件下载都是下载为excel的,做着做着需求竟然变了,要求能导出pdf。导出pdf倒也不是特别大的问题关键就是麻烦。 导出pdf我知道的一共有3中方法: 方法一:利用模板导出,但

java导出pdf
项目开发中,产品的需求越来越奇葩啦,开始文件下载都是下载为excel的,做着做着需求竟然变了,要求能导出pdf。导出pdf倒也不是特别大的问题关键就是麻烦。
导出pdf我知道的一共有3中方法:
方法一:利用模板导出,但是首先编辑模板的工具不好找,现有的国外的工具要收费,所以放弃了这个。
方法二:利用html页面导出,奈何自己不会写HTML,前端忙没时间帮忙写。本着求人不如靠己的想法就选择了第三种比较麻烦的方法,自己用table画。
方法三:自己用纯代码画格式(可调字体大小,颜色,对复杂没有规则的数据都可以)
首先必须导入的依赖有

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

然后就是一顿代码输出
先把效果贴上
在这里插入图片描述
然后是代码部分

@apiOperation(value = "导出")    @PostMapping("/download")    @SneakyThrows(Exception.class)    public void download(@RequestBody @Valid FumigationDTO fumigationDTO, httpservletResponse response, HttpServletRequest request) {        // 防止日志记录获取session异常        request.getSession();        // 设置编码格式        response.setContentType("application/pdf;charset=UTF-8");        response.setCharacterEncoding("utf-8");        String fileName = URLEncoder.encode("下载的PDF名称", "UTF-8");        response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".pdf");        fumigationService.download(fumigationDTO, response);    }

业务层

@Override    public void download(FumigationDTO fumigationDTO, HttpServletResponse response) throws IOException {    //要下载的数据查询数据部分我去掉了有需要自己根据业务取        FumigationDowloadVO fumigationDowloadVO = new FumigationDowloadVO();                // 定义全局的字体静态变量        Font titlefont;        Font headfont;        Font keyfont = null;        Font textfont = null;        Font content = null;        // 最大宽度        try {            // 不同字体(这里定义为同一种字体:包含不同字号、不同style)            BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);            titlefont = new Font(bfChinese, 16, Font.BOLD);            headfont = new Font(bfChinese, 14, Font.BOLD);            keyfont = new Font(bfChinese, 10, Font.BOLD);            textfont = new Font(bfChinese, 15, Font.NORMAL);            content = new Font(bfChinese, 10, Font.NORMAL);        } catch (Exception e) {            e.printStackTrace();        }        BaseFont bf;        Font font = null;        try {            //创建字体            bf = BaseFont.createFont( "STSong-Light", "UniGB-UCS2-H",                    BaseFont.NOT_EMBEDDED);            //使用字体并给出颜色            font = new Font(bf,20,Font.BOLD,BaseColor.BLACK);        } catch (Exception e) {            e.printStackTrace();        }        Document document = new Document(new RectangleReadOnly(842F, 595F));        try {            PdfWriter.getInstance(document,response.getOutputStream());            //打开生成的pdf文件            document.open();            //设置内容            Paragraph paragraph = new Paragraph("熏蒸备案回执",font);            paragraph.setAlignment(1);            //引用字体            document.add(paragraph);            // 设置表格的列宽和列数            float[] widths = {25f,25f,25f,25f,25f,25f};            PdfPTable table = new PdfPTable(widths);            table.setSpacingBefore(20f);            // 设置表格宽度为100%            table.setWidthPercentage(100.0F);            table.setHeaderRows(1);            table.getDefaultCell().setHorizontalAlignment(1);            PdfPCell cell = null;            //第一行            cell = new PdfPCell(new Paragraph("熏蒸备案编码",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            cell.setFixedHeight(30);            table.addCell(cell);            cell = new PdfPCell(new Paragraph(fumigationDowloadVO.getXzbm()));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table.addCell(cell);            cell = new PdfPCell(new Paragraph("熏蒸备案时间",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table.addCell(cell);            cell = new PdfPCell(new Paragraph(CheckVerifyUtil.dateToString4(fumigationDowloadVO.getSqxzrq())));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table.addCell(cell);            cell = new PdfPCell(new Paragraph("申请备案单位",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table.addCell(cell);            cell = new PdfPCell(new Paragraph(fumigationDowloadVO.getDwmc(),content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table.addCell(cell);            //第二行            cell = new PdfPCell(new Paragraph("熏蒸作业库点",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            cell.setFixedHeight(30);            table.addCell(cell);            cell = new PdfPCell(new Paragraph(fumigationDowloadVO.getKdmc(),content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table.addCell(cell);            cell = new PdfPCell(new Paragraph("负责人",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table.addCell(cell);            cell = new PdfPCell(new Paragraph(fumigationDowloadVO.getFzr(),content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table.addCell(cell);            cell = new PdfPCell(new Paragraph("联系电话",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table.addCell(cell);            cell = new PdfPCell(new Paragraph(fumigationDowloadVO.getFzrdh(),content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table.addCell(cell);            //第三行            cell = new PdfPCell(new Paragraph("单据状态",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            cell.setFixedHeight(30);            table.addCell(cell);            cell = new PdfPCell(new Paragraph(shzt(fumigationDowloadVO.getShzt()),content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table.addCell(cell);            cell = new PdfPCell(new Paragraph("审核时间",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table.addCell(cell);            cell = new PdfPCell(new Paragraph(CheckVerifyUtil.dateToString5(fumigationDowloadVO.getShsj()),content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table.addCell(cell);            cell = new PdfPCell(new Paragraph(" ",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table.addCell(cell);            cell = new PdfPCell(new Paragraph(" ",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table.addCell(cell);            // 设置表格的列宽和列数            float[] widths2 = {25f,25f,25f,25f,25f,25f};            PdfPTable table2 = new PdfPTable(widths2);            table2.setSpacingBefore(20f);            // 设置表格宽度为100%            table2.setWidthPercentage(100.0F);            table2.setHeaderRows(1);            table2.getDefaultCell().setHorizontalAlignment(1);            //人员列表-第四行            cell = new PdfPCell(new Paragraph("姓名",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            cell.setFixedHeight(20);            table2.addCell(cell);            cell = new PdfPCell(new Paragraph("职务",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table2.addCell(cell);            cell = new PdfPCell(new Paragraph("职业资格",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table2.addCell(cell);            cell = new PdfPCell(new Paragraph("身体状况",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table2.addCell(cell);            cell = new PdfPCell(new Paragraph("熏蒸任务分工",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table2.addCell(cell);            cell = new PdfPCell(new Paragraph("是否外包",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table2.addCell(cell);            //人员列表数据-第五行            if(fumigationDowloadVO.getProples().size() > 0){                for (RecordFumigationPeople prople : fumigationDowloadVO.getProples()) {                    PdfPCell cell1 = new PdfPCell(new Paragraph(prople.getXm(), content));                    PdfPCell cell2 = new PdfPCell(new Paragraph(prople.getZw(), content));                    PdfPCell cell3 = new PdfPCell(new Paragraph(prople.getZyzg(), content));                    PdfPCell cell4 = new PdfPCell(new Paragraph(prople.getStzk(), content));                    PdfPCell cell5 = new PdfPCell(new Paragraph(prople.getXzrwfg(), content));                    PdfPCell cell6 = new PdfPCell(new Paragraph(prople.getSfwb(), content));                    //单元格对齐方式                    cell1.setHorizontalAlignment(Element.ALIGN_CENTER);                    cell1.setVerticalAlignment(Element.ALIGN_MIDDLE);                    cell1.setFixedHeight(20);                    //单元格垂直对齐方式                    cell2.setHorizontalAlignment(Element.ALIGN_CENTER);                    cell2.setVerticalAlignment(Element.ALIGN_MIDDLE);                    cell3.setHorizontalAlignment(Element.ALIGN_CENTER);                    cell3.setVerticalAlignment(Element.ALIGN_MIDDLE);                    cell4.setHorizontalAlignment(Element.ALIGN_CENTER);                    cell4.setVerticalAlignment(Element.ALIGN_MIDDLE);                    cell5.setHorizontalAlignment(Element.ALIGN_CENTER);                    cell5.setVerticalAlignment(Element.ALIGN_MIDDLE);                    cell6.setHorizontalAlignment(Element.ALIGN_CENTER);                    cell6.setVerticalAlignment(Element.ALIGN_MIDDLE);                    table2.addCell(cell1);                    table2.addCell(cell2);                    table2.addCell(cell3);                    table2.addCell(cell4);                    table2.addCell(cell5);                    table2.addCell(cell6);                }            }            // 设置表格的列宽和列数            float[] widths3 = {25f,25f,25f,25f,25f};            PdfPTable table3 = new PdfPTable(widths3);            table3.setSpacingBefore(20f);            // 设置表格宽度为100%            table3.setWidthPercentage(100.0F);            table3.setHeaderRows(1);            table3.getDefaultCell().setHorizontalAlignment(1);            //实施储粮信息            cell = new PdfPCell(new Paragraph("仓房",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            cell.setFixedHeight(20);            table3.addCell(cell);            cell = new PdfPCell(new Paragraph("货位",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table3.addCell(cell);            cell = new PdfPCell(new Paragraph("粮食品种",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table3.addCell(cell);            cell = new PdfPCell(new Paragraph("计划熏蒸开始时间",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table3.addCell(cell);            cell = new PdfPCell(new Paragraph("计划熏蒸结束时间",content));            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);            cell.setHorizontalAlignment(Element.ALIGN_CENTER);            table3.addCell(cell);            if(fumigationDowloadVO.getDtls().size() > 0){                for (RecordFumigationDtlVO dtl : fumigationDowloadVO.getDtls()) {                    PdfPCell cell1 = new PdfPCell(new Paragraph(dtl.getCfmc(), content));                    PdfPCell cell2 = new PdfPCell(new Paragraph(dtl.getHwmc(), content));                    PdfPCell cell3 = new PdfPCell(new Paragraph(dtl.getLspzmc(), content));                    PdfPCell cell4 = new PdfPCell(new Paragraph(CheckVerifyUtil.dateToString4(dtl.getJhxzksrq()), content));                    PdfPCell cell5 = new PdfPCell(new Paragraph(CheckVerifyUtil.dateToString4(dtl.getJhxzjsrq()), content));                    //设置居中                    cell1.setHorizontalAlignment(Element.ALIGN_CENTER);                    cell1.setVerticalAlignment(Element.ALIGN_MIDDLE);                    cell1.setFixedHeight(20);                    cell2.setHorizontalAlignment(Element.ALIGN_CENTER);                    cell2.setVerticalAlignment(Element.ALIGN_MIDDLE);                    cell3.setHorizontalAlignment(Element.ALIGN_CENTER);                    cell3.setVerticalAlignment(Element.ALIGN_MIDDLE);                    cell4.setHorizontalAlignment(Element.ALIGN_CENTER);                    cell4.setVerticalAlignment(Element.ALIGN_MIDDLE);                    cell5.setHorizontalAlignment(Element.ALIGN_CENTER);                    cell5.setVerticalAlignment(Element.ALIGN_MIDDLE);                    table3.addCell(cell1);                    table3.addCell(cell2);                    table3.addCell(cell3);                    table3.addCell(cell4);                    table3.addCell(cell5);                }            }            document.add(new Paragraph("\n"));            document.add(new Paragraph("▋ 基本信息",content));            document.add(new Paragraph("\n"));            document.add(table);            document.add(new Paragraph("\n"));            document.add(new Paragraph("▋ 基本信息",content));            document.add(new Paragraph("\n"));            document.add(table2);            document.add(new Paragraph("\n"));            document.add(new Paragraph("▋ 熏蒸作业储粮粮情",content));            document.add(new Paragraph("\n"));            document.add(table3);//关闭文档            document.close();        } catch (DocumentException e) {            e.printStackTrace();            log.error("导出pdf失败:{}",e);        }    }

然后就可以了直接导出pdf。

来源地址:https://blog.csdn.net/weixin_51114236/article/details/131729816

--结束END--

本文标题: java导出pdf(纯代码实现)

本文链接: https://lsjlt.com/news/372908.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java导出pdf(纯代码实现)
    java导出pdf 在项目开发中,产品的需求越来越奇葩啦,开始文件下载都是下载为excel的,做着做着需求竟然变了,要求能导出pdf。导出pdf倒也不是特别大的问题关键就是麻烦。 导出pdf我知道的一共有3中方法: 方法一:利用模板导出,但...
    99+
    2023-08-17
    java pdf 开发语言
  • Java实现PDF导出功能
    一、添加依赖 com.lowagie itext 2.1.5 二、实现示例代码 如下代码中使用了 【SIMYOU...
    99+
    2023-09-15
    java 开发语言 PDF导出
  • PHPlaravel实现导出PDF功能
    目录一、laravel-tcpdf二、tcpdf三、TCPDF解决保存中文文件名的方法补充一、laravel-tcpdf 导出PDF文件Laravel框架为我们集成了一个插件tcpd...
    99+
    2022-11-13
    PHP laravel导出PDF PHP 导出PDF PHP laravel
  • asp.net 按指定模板导出word,pdf实例代码
    复制代码 代码如下:/// <summary>        /// 导出word文件 &...
    99+
    2022-11-15
    asp.net word pdf
  • Java实现导出Word文档的示例代码
    最近公司做项目,需要导出word或者PDF文档,PDF实现文档已经轻车熟路了,想研究搞一下word文档。经过调研发现了一个好用的开源项目Poi-tl http://deepoove....
    99+
    2023-02-09
    Java导出Word文档 Java导出Word Java Word
  • JAVA实现DOC转PDF的示例代码
    目录一、下载依赖二、代码实现三、转换结果四、后续研究五、总结Word作为目前主流的文本编辑软件之一,功能十分强大,应用人群广,但是它也存在一些问题。像是Word文件在不同软件或操作平...
    99+
    2024-04-02
  • java中PDF文本如何使用itext实现导出
    java中PDF文本如何使用itext实现导出?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。jar:itext-4.2.1.jar在很多公文的落款处都需要绝对定位,所以记录此代...
    99+
    2023-05-31
    java itext pdf
  • Java使用poi导出ppt文件的实现代码
    什么是poi Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Of...
    99+
    2024-04-02
  • java根据模板导出PDF的详细实现过程
    目录题记:一、需求二、解决方案三、实现功能四、主要代码结构说明:五、关键代码说明1、模板配置2、获取模板内容并填充数据3、导出模板到PDF文件4、测试工具类六、生成效果图七、遇到的坑...
    99+
    2024-04-02
  • JavaScript实现导入导出excel的示例代码
    目录Excel导入实现方式1实现方式2Excel导出Excel导入 先下包(xlsx) npm i xlsx 把数组里面中文的键修改成英文的键: 原因:因为中文的键后台不认识,只能修...
    99+
    2024-04-02
  • 基于Vue实现HTML转PDF并导出
    目录前言方案一问题解决方案方案二使用问题及解决方案方案三(推荐)总结前言 近期公司提出了一个新需求,希望前端能够根据UI设计绘制运动报告界面,完成数据展示,包括图标展示,并且能够将H...
    99+
    2024-04-02
  • PHP laravel如何实现导出PDF功能
    今天小编给大家分享一下PHP laravel如何实现导出PDF功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、lara...
    99+
    2023-07-04
  • Java导出PDF(itextpdf)-通俗易懂
    文章目录 前言一、itextpdf是什么?二、快速开始1.废话不多说,效果先上一波2.依赖引入3.模版加载3.1模版加载工具类PDF 4.PDF操作工具类方法5.完整代码5.1前端代码-Vue5.2控制层代码5.3业务层代码...
    99+
    2023-08-17
    java pdf 开发语言
  • Java实现将彩色PDF转为灰度PDF的示例代码
    目录配置程序环境转彩色PDF为灰度实现代码(Java)补充本文以Java代码为例介绍如何实现将彩色PDF文件转为灰度(黑白)的PDF文件,即:将PDF文档里面的彩色图片或者文字等通过...
    99+
    2024-04-02
  • JAVA实现PDF转HTML文档的示例代码
    本文是基于PDF文档转PNG图片,然后进行图片拼接,拼接后的图片转为base64字符串,然后拼接html文档写入html文件实现PDF文档转HTML文档。 引入Maven依赖 &...
    99+
    2024-04-02
  • Java实现无损Word转PDF的示例代码
    目录前言word转pdf实现思路项目远程仓库Maven项目pom文件依赖核心代码实现结果分析前言 本来想写word转pdf和pdf转word的代码呢,没想到word转pdf就写了很多...
    99+
    2024-04-02
  • Java实现合并多个PDF的示例代码
    这里合并用到了一个itext的包。使用maven直接导入依赖即可。 <dependency> <groupId>com.lowagie</gro...
    99+
    2024-04-02
  • 纯js如何实现html转pdf
    这篇文章将为大家详细讲解有关纯js如何实现html转pdf,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。项目开发中遇到了一个变态需求,需要把一整个页面导出为pdf格式,而...
    99+
    2024-04-02
  • vue导出word纯前端的实现方式
    vue导出word纯前端实现 最近项目有个需求导出word,纯前端实现,查了查资料,用docxtemplater简直不要太简单。 直接把官网例子拿过来就可以了。!!! 官网地址 首先...
    99+
    2024-04-02
  • Spring 实现excel及pdf导出表格示例
    整理文档,搜刮出一个Spring 实现excel及pdf导出表格的代码,稍微整理精简一下做下分享。excel 导出:package light.mvc.utils.excel; import java.util.Date; import ...
    99+
    2023-05-31
    spring excel ce
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作