当前位置: 首页 > news >正文

网站版面设计方案开源众包

网站版面设计方案,开源众包,网站建设的相关政策,个人seo优化SpringBootFreemark根据html模板导出PDF 1、引入maven2、两个工具类2.1 test.html模板2.2 test.html模板中的Freemark语法 3、controller导出pdf 1、引入maven 导出pdf的一些必要jar包 dependencygroupIdorg.projectlombok/groupIdartifactId… SpringBootFreemark根据html模板导出PDF 1、引入maven2、两个工具类2.1 test.html模板2.2 test.html模板中的Freemark语法 3、controller导出pdf 1、引入maven 导出pdf的一些必要jar包 dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdcom.itextpdf/groupIdartifactIditextpdf/artifactIdversion5.5.13/version/dependencydependencygroupIdcom.itextpdf.tool/groupIdartifactIdxmlworker/artifactIdversion5.5.13/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-freemarker/artifactIdversion2.3.6.RELEASE/version/dependencydependencygroupIdorg.freemarker/groupIdartifactIdfreemarker/artifactIdversion2.3.28/version/dependencydependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.4.3/version/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-io/artifactIdversion1.3.2/version/dependency2、两个工具类 GeneratePDF.java 注意1工具类中的变量templates 表示在resource建个templates目录 test.html表示生成pdf的模板water.png表示pdf的水印这里我没加水印如果要加水印只用把下面我注释的三行代码放开就行。 注意2: test.html和water.png都放在templates目录 package cn.yx.zg.utils.pdf;import cn.hutool.core.io.resource.ClassPathResource; import com.itextpdf.text.*; import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf.PdfGState; import com.itextpdf.text.pdf.PdfPageEvent; import com.itextpdf.text.pdf.PdfWriter; import com.itextpdf.tool.xml.XMLWorkerHelper;import java.io.*; import java.nio.charset.Charset;public class GeneratePDF {public final static String TEMPLATE_DIRECTORY_INSPECTION /templates/;public final static String TEMPLATE_NAME_INSPECTION test.html;public final static String TEMPLATE_WATER_INSPECTION water.png;/*** HTML 转 PDF** param content html内容* param outPath 输出pdf路径* return 是否创建成功*/public static boolean html2Pdf(String content, String outPath) throws FileNotFoundException {return html2Pdf(content, new FileOutputStream(outPath));}public static boolean html2Pdf(String content, OutputStream out) {try {Document document new Document(); //创建一个标准的A4纸文档PdfWriter writer PdfWriter.getInstance(document, out);//书写器与ducument文档关联document.open();//打开文档 // addWaterMark(writer);writer.setPageEvent(new PdfPageEvent() {Overridepublic void onOpenDocument(PdfWriter pdfWriter, Document document) {}Overridepublic void onStartPage(PdfWriter pdfWriter, Document document) { // addWaterMark(pdfWriter);}Overridepublic void onEndPage(PdfWriter pdfWriter, Document document) {}Overridepublic void onCloseDocument(PdfWriter pdfWriter, Document document) {}Overridepublic void onParagraph(PdfWriter pdfWriter, Document document, float v) {}Overridepublic void onParagraphEnd(PdfWriter pdfWriter, Document document, float v) {}Overridepublic void onChapter(PdfWriter pdfWriter, Document document, float v, Paragraph paragraph) {}Overridepublic void onChapterEnd(PdfWriter pdfWriter, Document document, float v) {}Overridepublic void onSection(PdfWriter pdfWriter, Document document, float v, int i, Paragraph paragraph) {}Overridepublic void onSectionEnd(PdfWriter pdfWriter, Document document, float v) {}Overridepublic void onGenericTag(PdfWriter pdfWriter, Document document, Rectangle rectangle, String s) {}});XMLWorkerHelper.getInstance().parseXHtml(writer, document, new ByteArrayInputStream(content.getBytes()), null, Charset.forName(UTF-8));document.close();//关闭文档} catch (Exception e) {System.out.println(生成模板内容失败 e.fillInStackTrace());return false;}return true;}/*** HTML 转 PDF** param content html内容* return PDF字节数组*/public static byte[] html2Pdf(String content) {ByteArrayOutputStream outputStream null;try {Document document new Document();outputStream new ByteArrayOutputStream();PdfWriter writer PdfWriter.getInstance(document, outputStream);document.open();XMLWorkerHelper.getInstance().parseXHtml(writer, document, new ByteArrayInputStream(content.getBytes()), null, Charset.forName(UTF-8));document.close();} catch (Exception e) {System.out.println(------生成pdf失败-------);}return outputStream.toByteArray();}public static void addWaterMark(PdfWriter writer) {Image image null;try {ClassPathResource resource new ClassPathResource(TEMPLATE_DIRECTORY_INSPECTION TEMPLATE_WATER_INSPECTION);image Image.getInstance(resource.getUrl());// 加入水印PdfContentByte waterMar writer.getDirectContentUnder();// 开始设置水印waterMar.beginText();// 设置水印透明度PdfGState gs new PdfGState();// 设置笔触字体不透明度为0.4fgs.setStrokeOpacity(0.2f);gs.setFillOpacity(0.2f);// 设置等比缩放image.scalePercent(25);// 依照比例缩放// image.scaleAbsolute(200,100);//自定义大小image.setRotation(45f);// 设置透明度waterMar.setGState(gs);// 添加水印图片 // waterMar.addImage(image);image.setAbsolutePosition(110f, 130f);//结束设置waterMar.endText();waterMar.stroke();try {waterMar.addImage(image);} catch (DocumentException e) {e.printStackTrace();} finally {waterMar null;gs null;}} catch (BadElementException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}} GetHtmlContent.java package cn.yx.zg.utils.pdf;import freemarker.cache.ClassTemplateLoader; import freemarker.template.Configuration; import freemarker.template.Template;import java.io.StringWriter; import java.io.Writer; import java.util.Map;public class GetHtmlContent {/*** 获取模板内容** param templateDirectory 模板文件夹* param templateName 模板文件名* param paramMap 模板参数* return* throws Exception*/public static String getTemplateContent(String templateDirectory, String templateName, MapString, Object paramMap) throws Exception {Configuration configuration new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);//不兼容配置try {configuration.setTemplateLoader(new ClassTemplateLoader(GetHtmlContent.class, templateDirectory)); // configuration.setDirectoryForTemplateLoading(new File(templateDirectory));//加载模板} catch (Exception e) {e.printStackTrace();}Writer out new StringWriter();Template template configuration.getTemplate(templateName, UTF-8);//缓存template.process(paramMap, out);out.flush();out.close();return out.toString();}} 2.1 test.html模板 !DOCTYPE html html langen headmeta charsetUTF-8/title测试表单/titlestylebody {font-family: SimSun;}.f-s-1 {font-size: 12px;}.table-main {width: 100%;border-collapse: collapse;border-right: 1px solid rgba(0, 0, 0, 0.7);border-bottom: 1px solid rgba(0, 0, 0, 0.7);margin-bottom: 30px;}.table-main td {border-left: 1px solid rgba(0, 0, 0, 0.7);border-top: 1px solid rgba(0, 0, 0, 0.7);padding: 4px;}.th1 {font-weight: bold;background-color: #d7d7d7;}.th2 {background-color: #f1f1f1;}.text-center{text-align: center;}/style /head bodyh5 stylemargin-top: 30px学生列表/h5 table classtable-main f-s-1theadtrtd classth1 stylewidth: 28%姓名/tdtd classth1 text-center stylewidth: 12%性别/tdtd classth1 text-center stylewidth: 12%年龄/tdtd classth1 text-center stylewidth: 12%地址/td/tr/theadtbody#list resultItems as itemtrtd classtext-center${item.name}/tdtd classtext-center${item.sex}/tdtd classtext-center${item.age}/tdtd classtext-center${item.address}/td/tr/#list/tbody /table/body /html 2.2 test.html模板中的Freemark语法 1、 #list resultItems as item 表示遍历后台返回的resultItems 2、下面判断age字段是否为空。 #if age?? 存在#else 不存在 /#if#--判断数据是否存在存在则则遍历-- #if resultItems??#list resultItems as item${item}/#list /#if3、controller导出pdf 注意: 代码中设置的变量要和html模板中的变量一致。 package cn.yx.zg.controller;import cn.yx.zg.utils.pdf.GeneratePDF; import cn.yx.zg.utils.pdf.GetHtmlContent; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;RestController public class TestExportPdfController {RequestMapping(/test)public void test(HttpServletResponse response) throws Exception {MapString, Object paramMap new HashMap();ListMapString, Object resultItems new ArrayList();for (int i 0; i 100; i) {MapString, Object items new HashMap();items.put(name, 张三 i);items.put(age, 18 i);items.put(sex, 男 i);items.put(address, 河南 i);resultItems.add(items);}paramMap.put(resultItems, resultItems);String destFileName 测试表单.pdf;destFileName new String(destFileName.getBytes(), StandardCharsets.ISO_8859_1);OutputStream out;//设置响应response.setHeader(Content-Disposition, attachment;filename destFileName);response.setContentType(application/pdf);out response.getOutputStream();String templateContent GetHtmlContent.getTemplateContent(GeneratePDF.TEMPLATE_DIRECTORY_INSPECTION, GeneratePDF.TEMPLATE_NAME_INSPECTION, paramMap);GeneratePDF.html2Pdf(templateContent, out);out.flush();} }
http://www.hkea.cn/news/14321095/

相关文章:

  • 网站维护属于什么专业全面了解网站开发
  • 永康网站建设网站建设需要知道什么软件
  • 衡水网站建设制作网站ip段屏蔽
  • 微信辅助做任务网站软件开发文档国家标准
  • 电子商务网站分析微信公众号网址
  • 查询网站服务器提供商网站开发合同协议
  • 1 建设好自媒体门户网站wordpress 无法自动升级
  • 汕头企业网站怎么做福建嘉瑞建设工程有限公司网站
  • 挂号网站建设搜狗搜索推广
  • 网站与网页之间的区别是什么淄博做网站
  • wordpress 字段资源网站优化排名网站
  • 商城外贸网站设计艺术品电商网站开发
  • 个人做民宿需要建立网站吗中国工厂网站
  • 做网站设计赚钱吗网站如何做好优化
  • 高端网站建设,恩愉科技新余市网站建设
  • 北京公司网站设计大良制作网站
  • 官方网站建设ppt免费制作ppt
  • 惠州网站建设制作企业网站开发 外文文献
  • 网站怎么做发送邮件的超链接seo顾问合同
  • 威海营销型网站建设简述网站建设的方法
  • 深圳住房和建设管理局官方网站网页设计手机版app下载
  • 网站概述怎么写百度app安装
  • 保定网站开发公司来宾网站建设
  • 龙岩建设局升降机网站免费发布推广的平台
  • 外贸公司网站模板免费wordpress托管站点
  • 以网站和什么为重点建设平台简述网页设计的开发流程
  • 郓城网站制作wordpress 链接新窗口
  • 简述网站开发平台及常用开发工具软文推广套餐
  • 赣州市建设工程造价管理网站俄罗斯乌克兰最新局势
  • 乐平网站设计免费的个人主页网站