我的编程空间,编程开发者的网络收藏夹
学习永远不晚

java导出pdf(纯代码实现)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

java导出pdf(纯代码实现)

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

java导出pdf(纯代码实现)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

java导出pdf(纯代码实现)

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

Java实现导出pdf格式文件的示例代码

Java实现导出PDF格式文件的示例代码该代码使用ApachePDFBox库创建和导出PDF文件。它创建一个PDF文档,添加一个页面,并创建一个内容流来向页面写入文本。代码设置字体、字体大小,使用showText()方法写入文本,并保存文档到文件系统。您可以自定义代码,更改字体、大小和颜色,添加图像或其他元素,生成更复杂的内容。除了PDFBox,还有其他Java库可创建和导出PDF文件,例如iText、FlyingSaucer和JPDFWriter。
Java实现导出pdf格式文件的示例代码
2024-04-02

asp.net 按指定模板导出word,pdf实例代码

这篇文章介绍了asp.net 按指定模板导出word,pdf实例代码,有需要的朋友可以参考一下
2022-11-15

PHPlaravel实现导出PDF功能

有时候我们会需要使用PHP导出pdf。这篇文章主要是记录一下laravel实现导出PDF的两种方式。文中的示例代码讲解详细,需要的可以参考一下
2022-11-13

Java实现导出Word文档的示例代码

poi-tl是一个基于ApachePOI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中。本文就利用它实现导出Word文档功能,需要的可以参考一下
2023-02-09

java中PDF文本如何使用itext实现导出

java中PDF文本如何使用itext实现导出?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。jar:itext-4.2.1.jar在很多公文的落款处都需要绝对定位,所以记录此代
2023-05-31

PHP laravel如何实现导出PDF功能

今天小编给大家分享一下PHP laravel如何实现导出PDF功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、lara
2023-07-04

Spring 实现excel及pdf导出表格示例

整理文档,搜刮出一个Spring 实现excel及pdf导出表格的代码,稍微整理精简一下做下分享。excel 导出:package light.mvc.utils.excel; import java.util.Date; import
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录