littlepdf 是一个基于数据+模板->html->pdf的小型框架,html渲染模板用户可自行配置,内置thymeleaf,freemarker,word三种实现,实现 IRender接口即可
使用方式参见:little-pdf-springboot-sample,html渲染成pdf基于itext5+flying-saucer(css1.0,css2.0 支持)
基础模板:
html+css ->pdf
word(docx)->docx->pdf
word ->pdf 依赖jodconverter ->apache openoffice或者libreoffice
适合简单pdf生成,如各种电子合同(租房,网贷,借款等),要求严苛的pdf生成并不适合,渲染pdf过程中,支持多种资源加载方式:
- 网络
- classpath
- 文件系统具体参见:TemplateLoaderUtil
1.配置@ConfigurationpublicclassPdfConfig {@ConfigurationProperties(prefix ="little.pdf")@BeanpublicItext5PdfRenderConfiglittlePdfConfig(){Itext5PdfRenderConfigrenderConfig =newItext5PdfRenderConfig();returnrenderConfig; }@Bean@ConditionalOnBean(value = {Itext5PdfRenderConfig.class})publicLittlePdfTemplateRenderlittlePdfTemplateRender() {ClassLoaderTemplateResolverresolver =newClassLoaderTemplateResolver();resolver.setOrder(1);resolver.setCacheable(true);resolver.setSuffix(".html");resolver.setCharacterEncoding("UTF-8");resolver.setTemplateMode(TemplateMode.HTML5);resolver.setPrefix("pdftemplate/");TemplateEnginetemplateEngine =newTemplateEngine();templateEngine.addTemplateResolver(resolver);WordTemplateRenderwordTemplateRender =newWordTemplateRender("d://temp/");wordTemplateRender.setSuffix("docx");ThymeleafHtmlRenderthymeleafHtmlRender =newThymeleafHtmlRender(templateEngine);thymeleafHtmlRender.setSuffix("html");Itext5PdfRenderConfigrenderConfig =littlePdfConfig();TemplateRenderthymeleafRender =newTemplateRender(renderConfig);thymeleafRender.addRender(thymeleafHtmlRender);thymeleafRender.addRender(wordTemplateRender);returnthymeleafRender; }}little.pdf.fontsDir=G:\github\little-pdf\little-pdf-springboot-sample\src\main\resources\fontslittle.pdf.resourcesDir=classpath:/pdftemplatelittle.pdf.charset=UTF-82.模板渲染littlePdfTemplateRender.render(template,jsonObject,outputStreamm);3.配置解释参见:com.taoyuanx.littlepdf.template.html2pdf.Itext5PdfRenderConfig
@TestpublicvoidsignTest()throwsException {itext5PdfSign.sign(newFileInputStream("d://temp/word.pdf"),newFileOutputStream("d://temp/word_signed.pdf")); }@Beforepublicvoidbefore() {Stringsignername ="桃源科技有限公司";Stringreason ="官方承认,不可篡改";Stringlocation ="桃源科技有限公司";Stringpassword ="123456";Stringp12Path ="g://data/client.p12";StringchapterPath ="g://data/stamp.png";Stringfield_name ="sign_Field";Itext5PdfSign.SignConfigsignConfig =newItext5PdfSign.SignConfig();signConfig.setSignP12Path(p12Path);signConfig.setSignP12Password(password);signConfig.setChapterImgPath(chapterPath);signConfig.setSignername(signername);signConfig.setReason(reason);signConfig.setLocation(location);signConfig.setSignFiledName(field_name);signConfig.setSignKeyWord("桃源科技有限公司");itext5PdfSign =newItext5PdfSign(signConfig); }// pdf 定位 实现 参见 com.taoyuanx.littlepdf.sign.Itext5PdfSign.KeyWordFinder
- html ->pdf 示例

