游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

Java工具类pdf导出工具类java导出pdf文件工具类

  介绍语
  本号主要是Java常用关键技术点,通用工具类的分享;以及springbootspringcloudMybatisplusdruidmysqlredisswaggermavendocker等集成框架的技术分享;datax、kafka、flink等大数据处理框架的技术分享。文章会不断更新,欢迎码友关注点赞收藏转发!
  望各位码友点击关注,冲1000粉。后面会录制一些视频教程,图文和视频结合,比如:图书介绍网站系统、抢购系统、大数据中台系统等。技术才是程序猿的最爱,码友们冲啊
  如果码友觉得代码太长,可以从头到尾快速扫射一遍,了解大概即可。觉得有用后再转发收藏,以备不时之需。
  正文:
  pdf工具类,前面excel导出的时候一个码友问有没有pdf的工具类,我翻看了一下项目,没找到。以前有一个项目是有pdf导出的,主要是导出一些发函有公章的文件,还有需求是导出报销发票有公章等的文件,都是定制化的,耦合太大了,有些项目是要求导出网页的内容,这个是前端直接导出pdf,根本不需要后端支持。所以我自己整理写了一个工具类,抛砖引玉,有需求的码友可以自己根据公司需求定制pdf的生成工具类。这里只是给出一个非常基本的工具类,仅提供导出,仅供参考。欢迎多沟通使用例子importorg。junit。Test;importjava。util。ArrayList;importjava。util。List;publicclassPdfUtilTest{TestpublicvoidcreateTest(){ListPdfChapterpdfChaptersnewArrayList();pdfChapters。add(createContent());pdfChapters。add(createContent());pdfChapters。add(createContent());PdfUtil。getInstance()。init()。create(test14。pdf)。chapters(pdfChapters)。build();}privatePdfChaptercreateContent(){PdfChapterpdfChapternewPdfChapter();pdfChapter。setTitle(Pdf工具类);pdfChapter。setOrder(1);PdfSectionsectionnewPdfSection();section。setTitle(工具类例子1);PdfTextpdfTextnewPdfText();pdfText。setText(工具类内容内容);pdfText。setImage(true);pdfText。setImagePath(C:UsersliangxnDesktop20211106002429。png);section。getPdfTexts()。add(pdfText);pdfChapter。getSections()。add(section);returnpdfChapter;}}
  上面例子导出的pdf如下,有几页,每页的内容是一样的,含有一张图片。这里提一下,图片和内容的布局,不是那么简单的,需要根据需求定制代码。
  工具类源码:importcom。itextpdf。text。;importcom。itextpdf。text。pdf。BaseFont;importcom。itextpdf。text。pdf。PdfWriter;importorg。slf4j。Logger;importorg。slf4j。LoggerFactory;importjava。io。File;importjava。io。FileNotFoundException;importjava。io。FileOutputStream;importjava。io。IOException;importjava。net。URL;importjava。util。List;pdf工具类,主要是实现了导出功能。使用itextpdf包实现publicclassPdfUtil{privatestaticfinalLoggerloggerLoggerFactory。getLogger(PdfUtil。class);pdf大小,设置为A4纸大小publicstaticfinalRectanglePAGESIZEPageSize。A4;设置内容距离纸张上右下左的距离publicstaticfinalfloatMARGINLEFT50;publicstaticfinalfloatMARGINRIGHT50;publicstaticfinalfloatMARGINTOP50;publicstaticfinalfloatMARGINBOTTOM50;空格的间距大小publicstaticfinalfloatSPACING20;标题对齐方式:0表示left,1表示centerpublicstaticfinalintTITLEALIGNMENT1;privatestaticvolatilePdfUtilinstancenull;pdf文档privateDocumentdocumentnull;文章标题字体privateFontchapterFontnull;小节标题字体privateFontsectionFontnull;内容字体privateFonttextFontnull;privatePdfUtil(){}DCL(DoubleCheckLock双端捡锁机制)publicstaticPdfUtilgetInstance(){if(instancenull){synchronized(PdfUtil。class){if(instancenull){instancenewPdfUtil();}}}returninstance;}初始化字体protectedPdfUtilinit(){默认设置chapterFontcreateFont(20,Font。BOLD,newBaseColor(0,0,255));sectionFontcreateFont(16,Font。BOLD,newBaseColor(0,0,255));textFontcreateFont(10,Font。NORMAL,newBaseColor(0,0,0));returninstance;}初始化字体protectedPdfUtilinit(FontchapterFont,FontsectionFont,FonttextFont){使用自定义的字体chapterFontchapterFont;sectionFontsectionFont;textFonttextFont;returninstance;}创建pdf文件paramfileName文件(全路径文件名)protectedPdfUtilcreate(StringfileName){FilefilenewFile(fileName);documentnewDocument(PAGESIZE,MARGINLEFT,MARGINRIGHT,MARGINTOP,MARGINBOTTOM);FileOutputStreamoutnull;try{outnewFileOutputStream(file);PdfWriter。getInstance(document,out);}catch(FileNotFoundExceptione){logger。error(创建pdf文件异常,e);}catch(DocumentExceptione){logger。error(创建pdf文件错误,e);}打开文档准备写入内容document。open();returninstance;}protectedPdfUtilchapters(ListPdfChapterpdfChapters){try{for(PdfChapterpdfChapter:pdfChapters){ChapterchapterwriteChapter(pdfChapter);for(PdfSectionpdfSection:pdfChapter。getSections()){SectionsectionwriteSection(chapter,pdfSection);for(PdfTextpdfText:pdfSection。getPdfTexts()){if(pdfText。isImage()){writeImage(pdfText。getImagePath());}if(pdfText。getText()!null){section。add(writePhrase(pdfText。getText()));}}}document。add(chapter);}}catch(DocumentExceptione){e。printStackTrace();}returninstance;}protectedvoidbuild(){closeDocument();}写章节parampdfChapterprivateChapterwriteChapter(PdfChapterpdfChapter){ParagraphchapterTitlenewParagraph(pdfChapter。getTitle(),chapterFont);chapterTitle。setAlignment(TITLEALIGNMENT);ChapterchapternewChapter(chapterTitle,pdfChapter。getOrder());chapter。setNumberDepth(pdfChapter。getDepth());returnchapter;}写片段paramchapterparampdfSectionreturnprivateSectionwriteSection(Chapterchapter,PdfSectionpdfSection){Sectionsectionnull;if(chapter!null){ParagraphsectionTitlenewParagraph(pdfSection。getTitle(),sectionFont);sectionTitle。setSpacingBefore(SPACING);sectionchapter。addSection(sectionTitle);section。setNumberDepth(pdfSection。getDepth());}returnsection;}写内容paramtextprivatePhrasewritePhrase(Stringtext){returnnewParagraph(text,textFont);}写图片paramimageprivatevoidwriteImage(Stringimage){try{图片1Imageimage1Image。getInstance(image);将图片1添加到pdf文件中document。add(image1);}catch(IOExceptione){logger。error(写入图片异常,e);}catch(DocumentExceptione){logger。error(写入图片错误,e);}}功能:返回支持中文的字体仿宋psimfang。ttf仿宋常规psimhei。ttf黑体常规paramsize字体大小paramstyle字体风格paramcolor字体颜色return字体格式privateFontcreateFont(floatsize,intstyle,BaseColorcolor){BaseFontbaseFontnull;try{simfang。ttf文件必须放在class类文件所有的包路径下URLresourcePdfUtil。class。getClassLoader()。getResource(simfang。ttf);if(resourcenull){thrownewMyAppRunException(无simfang。ttf字体文件);}logger。info(加载simfang。ttf字体,路径:{},resource。getPath());baseFontBaseFont。createFont(resource。getPath(),BaseFont。IDENTITYH,BaseFont。EMBEDDED);}catch(DocumentExceptione){logger。error(加载字体错误,e);}catch(IOExceptione){logger。error(加载字体错误,e);}returnnewFont(baseFont,size,style,color);}最后关闭PDF文档privatevoidcloseDocument(){if(document!null){执行关闭时文件会自动保存document。close();logger。info(文件已保存);}}}
  其他类:通用异常类publicclassMyAppRunExceptionextendsRuntimeException{publicMyAppRunException(Stringmessage){super(message);}publicMyAppRunException(Stringmessage,Throwablecause){super(message,cause);}publicMyAppRunException(Throwablecause){super(cause);}protectedMyAppRunException(Stringmessage,Throwablecause,booleanenableSuppression,booleanwritableStackTrace){super(message,cause,enableSuppression,writableStackTrace);}}
  maven依赖dependencygroupIdcom。itextpdfgroupIditextpdfartifactIdversion5。5。13。2versiondependency
  外话,pdf的需求基本都是需要定制的,不是一个工具类能搞定的。这里给出处理pdf的另一个包,这个包是apache的包,对于读pdf非常好用。需要定制pdf导出的话,还是需要多了解这两个包,然后定制自己的工具类。dependencygroupIdorg。apache。pdfboxgroupIdpdfboxartifactIdversion2。0。24versiontypebundletype!要使用bundle需要先依赖一个plugin,自行百度dependency
  鄙人编码十年多,在项目中也积累了一些工具类,很多工具类在每个项目都有在用,很实用。大部分是鄙人封装的,有些工具类是同事封装的,有些工具类已经不记得是ctrlc的还是自己封装的了,现在有空就会总结项目中大部分的工具类,分享给各位码友。如果文章中涉及的代码有侵权行为请通知鄙人处理。
  计划是先把工具类整理出来,正所谓工欲善其事,必先利其器。项目中不管是普通单体项目还是多模块maven项目或是分布式微服务,一部分功能模块都是可以重用的,工具类模块就是其中之一。

4G版手机依然大受欢迎?麒麟9000精钢不怕火炼由于众所周知的原因,华为多款旗舰手机推出了4G版本,虽热依旧是麒麟9000,但总有些遗憾。搭载麒麟90004G版的手机是否依旧受到用户的欢迎呢?华为P50Pro新品首销之际,不……一年预计节电8。8亿度!客厅减碳从一台海信激光电视开始激光电视在75英寸及以上时,随着尺寸的增加,节能优势越来越明显。以100英寸为例,大约是LCD功耗的1312同样大小的电视。在谈到家庭节能减排的话题时,海信激光显示公司首席科学……业务点关停团长紧急提现,橙心优选被滴滴剥离后身陷困境滴滴旗下的社区团购平台橙心优选近期被传出业务大幅收缩、裁员等状况。9月6日、9月7日,新京报记者接连从多位橙心优选团长以及负责招募团长的人员处获悉,目前江苏、北京地区有团……华为手机性能这么强,5g专利。为什么还有人买苹果呢?报告,那是有钱人,我从第一个杂牌机,第二个开始用华为了,现在是第四台华为了,因为我穷华为手机有多强?强筋的只有价格5G专利多又能咋地?好像现在只有华为还在出4G吧!如果华……小米将在阿根廷建立生产基地生产智能手机据外媒报道,小米将在阿根廷火地岛建立生产基地,并用于生产智能手机,这意味着小米在阿根廷的投资将达到数百万美元。小米这几年前就来到了阿根廷,目标是推销其第一款价格近乎800……太阳也是核聚变反应,为什么太阳能够维持稳定而不发生爆炸?其实太阳自身拥有一项人类梦寐以求的技术:可控核聚变反应。那具体咋回事呢?我们需要先来了解一下太阳形成。话说宇宙大爆炸之后,经历了两代恒星。在目前太阳系附近位置,第二……华为的隐私保护与苹果的拒刷机,手机界的两大痛点华为隐私保护一直走在业界前列。最近荣耀新旗舰机也做到了业界比肩,感到国内高科技企业科技创新历史担当。当前,手机对于我们来说,不仅仅是通讯工具、娱乐平台,更是移动办公最佳工具,学……部分新能源车股转涨,特斯拉(TSLA。US)涨超12月3日(周四),部分美股新能源车股盘中转涨,截止发稿,Lucid(LCID。US)、特斯拉(TSLA。US)、蔚来(NIO。US)涨超1、小鹏汽车,理想汽车纷纷转涨走高。周四……OPPO真是神机阴历二十八,把衣服扔进洗衣机开洗,半个小时过后,打开洗衣机的门,顿时脑袋发蒙,竟然看到了我的手机,还是开机状态。马上拿出来,关机,取卡,风筒吹,放了一个小时后,再开机。发现能开……共研分布式数字身份技术,艾贝链动加入分布式数字产业联盟近日,艾贝链动正式获批,成为分布式数字身份产业联盟(以下简称:DIDA)成员单位之一。正式加盟DIDA后,艾贝链动将进一步加大在DID数字身份产业的技术研发、产品拓展等,并为行……苹果AirPods市场下滑严重,今年新款AirPods3将重AirPods销量下滑当年苹果推出AirPods无线耳机之后成功的引爆了市场,并在一段时间内一直霸占着市场50以上市场的垄断地位。但是由于各路品牌都在推出更加便宜,……办理银行卡一定要开通短信通知吗?不开通会不会更安全呢?财智成功认为,银行卡不需要开通短信通知,银行存款安全并不在于开通了短信。众所周知,银行卡的年费、小额账户管理费、短信通知费用,这是办理银行卡最容易遇到的三项费用。年费和小……
最好用的电视桌面软件,不信你看看当贝桌面因为简洁美观丰富的功能再加上当贝市场的生态加持,也是目前国内人气最高的电视桌面软件。在功能方面,支持首页自定义添加应用、便捷的应用卸载、天气预报、文件快传、一键清……你的小黄车押金退了吗?ofo广州公司正式注销2021年10月15日(星期五)影刀RPA电商快讯。今日关键词:ofo广州公司注销;抖音:目前无外卖业务计划,相关招商、代理信息不实;2021年大国创新百强指数:华为、阿里、腾……遇到喷墨打印机喷头堵塞怎么办,这样解决就搞定点击上方关注绘威打印,我专业,您轻松!喷墨打印机相比于激光打印机,最经常遇到的问题就是喷头堵塞,这也是令不少用户头痛的地方,今天小绘就教你遇到喷头堵塞时,应该怎么解决。……锻造硬核力量领跑智能制造宁波移动激发数字经济新动能数字经济时代,以5G、数据中心、工业互联网为代表的新基建风起云涌,推动实体经济加速数字化转型发展。随着浙江数字化改革如火如荼地推进,越来越多的企业加入数字化转型的浪潮中,数字经……一生中会遇到很多人,这三种人,你要学会感谢命里有时终须有,命里无时莫强求。在这一生中,相遇的人注定会相遇。但是大多数人只是路过,或者只有一种单方面的关系,不会在你的生活中停顿太久。这样的人见面并没有留下深刻的印象……拉卡拉Q3业绩交易额3。85万亿元,探索数字人民币商业模式近日,拉卡拉公布三季度业绩,2021年前三季度公司实现总营收49。39亿元,同比增长19。9,归母净利润8。56亿元,同比增长16。4。前三季度公司经营数据录得双高,主要……看家护院新宠小米室外摄像机无线设计IP65防水90天续航随着人们生活水平的提高以及安全意识的重视,近几年智能家居安防产品也越来越多,最常见的就是摄像机,笔者家里也有在使用室内的智能摄像机,可最近发现家门口院子里的盆栽和一些物品莫名丢……体积小颜值高净水烧水煮茶一体的莱卡mini净饮机体验CiaoBello,我是老房。其实老房一直想整一个功夫茶盘,这喝茶喝起来才能更有感觉,而且还会显得更加专业。但苦于家中桌面面积实在太小,放不下硕大的茶盘,而且功夫茶的确要……以前买手机,都问充一次电能用几天,现在没人问了以前买手机,都问充一次电能用几天,恨不得充一次电能用一年才好,都觉得充电麻烦。现在没人问了!而且你看他,不是在充电,就是在找充电器的路上。万能充大家还记得十多……如何评价雷鸟9月10日发布的新品S545C?有哪些亮点?雷鸟近日官方发布了新品S545C,这个配置这个价格,性价比如何?先看配置。划重点,分区背光、高亮、高刷、HDMI2。1、广色域、高色准。再看价格。是的你……豪华版兰德酷路泽?全新一代雷克萨斯旗舰LX将于10月14日正早在今年6月,丰田发布了代号LC300的全新一代兰德酷路泽时,就有不少车友们在暗暗期待它的豪华版兄弟,新一代雷克萨斯LX的到来。第三代雷克萨斯LX在2007年推出,于2010年……腾龙官宣28150mmF22。8研发中综合光学产品制造企业腾龙公司,将开发一款适用于全画幅无反相机的索尼E卡口大光圈标准变焦镜头2875mmF2。8DiIIIVXDG2(型号A063)(以下简称A063)。上市时间……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网