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

做网站的过程中有哪些问题网站建设要费用多少

做网站的过程中有哪些问题,网站建设要费用多少,wordpress 短代码失效,富阳建立网站的最终效果 其实可以加分页&#xff0c;但是没有那么精细的需求&#xff0c;所以我最后就没有加&#xff0c;有兴趣的可以尝试下。 项目依赖 <!-- Spring Boot 版本有点老 --> <spring-boot.version>2.3.12.RELEASE</spring-boot.version><!-- 依…

最终效果

在这里插入图片描述

其实可以加分页,但是没有那么精细的需求,所以我最后就没有加,有兴趣的可以尝试下。

项目依赖

<!--    Spring Boot 版本有点老    -->
<spring-boot.version>2.3.12.RELEASE</spring-boot.version><!--    依赖    -->
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version>
</dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version>
</dependency>

实现代码

出奇的简单,就一个核心的方法

核心实现方法

package com.an.pdfhandle.service;import com.an.pdfhandle.entity.Member;
import com.an.pdfhandle.entity.Team;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;import java.io.OutputStream;
import java.net.URL;
import java.util.List;public class PdfExportService {// 样式化导出为类似画布的横向排版:iText5 实现核心逻辑(支持多个团队)public void exportTeamCanvasStyle(List<Team> teams, OutputStream outputStream) throws Exception {Document document = new Document(PageSize.A4, 36, 36, 36, 36); // A4 纵向页面PdfWriter.getInstance(document, outputStream);document.open();BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);Font nameFont = new Font(baseFont, 12);Font labelFont = new Font(baseFont, 12, Font.BOLD);Font titleFont = new Font(baseFont, 16, Font.BOLD);for (Team team : teams) {// --- 信息页(第一页) ---document.newPage();document.add(new Paragraph("参 赛 队:" + team.getName(), titleFont));document.add(Chunk.NEWLINE);// 绘制基本代表队基本信息Paragraph p1 = new Paragraph();p1.setFont(nameFont);p1.add("领   队:" + team.getLeaderName() + "          联系电话:" + team.getLeaderPhone() + "\n");p1.add("主训教练:" + team.getCoachName() + "           队    医:" + team.getDoctorName() + "\n");p1.add("助理教练:" + team.getAssistantCoachName() + "           联系电话:" + team.getCoachPhone());document.add(p1);document.add(Chunk.NEWLINE);// 绘制TablePdfPTable infoTable = new PdfPTable(8);infoTable.setWidthPercentage(100);infoTable.setWidths(new float[]{1f, 2f, 2f, 1f, 2.5f, 2f, 4f, 2f});String[] headers = {"序号", "身份", "姓名", "性别", "身高/体重", "比赛号码", "身份证号", "服装号码"};for (String h : headers) {PdfPCell cell = new PdfPCell(new Phrase(h, labelFont));cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setPaddingTop(7f); // 4cm ≈ 113pt,每边加大间距cell.setPaddingBottom(7f);infoTable.addCell(cell);}int index = 1;for (Member m : team.getMembers()) {PdfPCell[] cells = new PdfPCell[] {new PdfPCell(new Phrase(String.valueOf(index++), nameFont)),new PdfPCell(new Phrase(m.getRole(), nameFont)),new PdfPCell(new Phrase(m.getName(), nameFont)),new PdfPCell(new Phrase(m.getGender(), nameFont)),new PdfPCell(new Phrase(m.getHeightWeight(), nameFont)),new PdfPCell(new Phrase(m.getCode(), nameFont)),new PdfPCell(new Phrase(m.getIdCard(), nameFont)),new PdfPCell(new Phrase(m.getClothingSize(), nameFont))};for (PdfPCell cell : cells) {cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setPaddingTop(7f); // 增加内边距cell.setPaddingBottom(7f);infoTable.addCell(cell);}}document.add(infoTable);// --- 画布页(第二页) ---document.newPage();// 代表队名称Paragraph title = new Paragraph("队名:" + team.getName(), titleFont);title.setAlignment(Element.ALIGN_LEFT);document.add(title);document.add(Chunk.NEWLINE);// 底部头像(其实也是一个表格,但是没有边框)PdfPTable table = new PdfPTable(3); // 每行最多3个头像(适合纵向)table.setWidthPercentage(100);table.getDefaultCell().setBorder(Rectangle.NO_BORDER);for (Member member : team.getMembers()) {PdfPCell cell = new PdfPCell();cell.setBorder(Rectangle.NO_BORDER);// 图片if (member.getImageUrl() != null) {try {Image img = Image.getInstance(new URL(member.getImageUrl()));img.scaleToFit(100, 120);cell.addElement(img);} catch (Exception e) {// 可添加默认图}}// 图片下的文字信息Paragraph info = new Paragraph();info.setLeading(14);info.add(new Chunk(member.getRole() + ":", labelFont));info.add(new Chunk(member.getName() + "\n", nameFont));info.add(new Chunk(member.getIdCard() + "\n", nameFont));info.add(new Chunk("号码:" + member.getCode(), nameFont));cell.addElement(info);table.addCell(cell);}int remainder = team.getMembers().size() % 3;if (remainder != 0) {for (int i = 0; i < 3 - remainder; i++) {PdfPCell empty = new PdfPCell();empty.setBorder(Rectangle.NO_BORDER);table.addCell(empty);}}document.add(table);}document.close();}}

调用Controller

package com.an.pdfhandle.demos.web;import com.an.pdfhandle.entity.Member;
import com.an.pdfhandle.entity.Team;
import com.an.pdfhandle.service.PdfExportService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;@RestController
public class PdfController {@GetMapping("/exportCanvasStyle")public void exportPdfCanvasStyle(HttpServletResponse response) throws Exception {// 模拟数据List<Team> teams = Arrays.asList(new Team("测试1代表队","大袋","15635748705","张三","李四","张三","15635748705", Arrays.asList(new Member("张三", "运动员", "10","男","178/70KG","2XL", "110101199001010011", "http://101.37.161.72:8888/an/M00/00/00/rBoEmGRy2TuARDgsAADin4gdP7Q119.jpg"),new Member("李四", "运动员", "11", "男","178/70KG","2XL", "110101199202020022", "http://101.37.161.72:8888/an/M00/00/00/rBoEmGRy2TuARDgsAADin4gdP7Q119.jpg"))),new Team("测试2代表队","大袋","15635748705","张三","李四","张三","15635748705", Arrays.asList(new Member("王五", "运动员", "21", "男","178/70KG","2XL", "110101199303030033", "http://101.37.161.72:8888/an/M00/00/00/rBoEmGRy2TuARDgsAADin4gdP7Q119.jpg"),new Member("赵六", "运动员", "22", "男","178/80KG","3XL", "110101199303030033", "http://101.37.161.72:8888/an/M00/00/00/rBoEmGRy2TuARDgsAADin4gdP7Q119.jpg"))));response.setContentType("application/pdf");response.setHeader("Content-Disposition", "attachment; filename=teams.pdf");new PdfExportService().exportTeamCanvasStyle(teams, response.getOutputStream());}
}

到此结束,其实生成的比较粗糙,这里需要反思下,我的后端的排版布局能力还是比较差的,哈哈,有待提高。

使用前端直接用DOM元素往出导PDF的话会美观点,毕竟CSS用的更加顺手点, 使用VUE导出可以看我另一篇博客

http://www.dtcms.com/wzjs/819436.html

相关文章:

  • 网站案例萧山建设局网站
  • 网站开发和网络安全郑州网站建设行情
  • 如何在阿里巴巴上建设公司网站温州营销网站公司哪家好
  • 上海大学生做网站的团队江西雄基建设网站
  • 微网站建设收费网站建设会议讲话
  • dedecms中英文网站 模板导视设计分析
  • 唯品会 一家专做特卖的网站桂林龙胜网站建设
  • 申请注册商标的流程9个广州seo推广神技
  • 中天银都建设集团网站山东卓创网络网站建设
  • 国外商业网站设计免费logo在线制作头像
  • 徐州网站开发公司网站建设管理及维护
  • 建设企业网站公积金网站自动跳转
  • 金坛做网站公司网站分类导航代码
  • 建筑公司网站模板网站帮助页面设计
  • 汇邦团建网站谁做的网站广告下悬浮代码怎么做
  • 婚庆公司电话号码网站图片太多怎么优化
  • 腾讯云建设网站视频哪有做网站
  • 手机网站建设广州网站开发合同需要交印花税吗
  • 企业网站的功能有哪些咸阳制作网站
  • 做视频网站用什么语言长春市长春网站制作站优化
  • 漳州网站开发怎样注册网站做销售
  • 太原网站推广服务网站突然搜不到了
  • 东莞网页开发番禺seo
  • 做电力公司网站网站架构拓扑图
  • 网站建设及优化心得体会网站建设忘记密码邮箱设置
  • 在国外做盗版网站吗国家企业信用公示信息公示网
  • 国内高端品牌网站建设电子商务网站课程设计总结
  • 网站建设如何弄链接wordpress altair
  • 做销售在哪些网站注册好visual studio
  • 网站虚拟主机共享中企高呈建设网站