参考文章

1、 [JAVA] java动态生成PDF文档
2、 【iText5 生成PDF】纯Java代码实现生成PDF(自定义表格、文本水印、单元格样式)
3、 Java PDF中table的生成和使用
4、 iText学习笔记之PdfPTable

前言

需求:根据存储的行为记录,生成附件,附件样式如下:

字段17及之后的是需要循环生成的。

后台代码

1、添加Maven依赖

<!-- PDF工具类 --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version></dependency><!-- PDF中文支持 --><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency><dependency><groupId>com.itextpdf.tool</groupId><artifactId>xmlworker</artifactId><version>5.5.13.1</version></dependency>

2、appication.properties

# 自定义存储或读取路径
# 注:自定义路径时,默认的四个文件夹下中的“META-INF下的resoures文件夹”仍然有效,其他三个文件夹失效
# 注:搜索文件时,自定义的文件夹的优先级要高于默认的四个文件夹
web.upload-path=C:/PDF/
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/static,classpath:/resources/,file:{web.upload-path}
springboot.mvc.static-path-pattern=/**

3、后端代码


@Value("${web.upload-path}")
private String uploadPath;
public String generateOrgDocumentPdf() throws AppException, IOException, DocumentException {String newPDFPath = uploadPath  + "信息采集表.pdf";createTableFile(newPDFPath );return newPDFPath;}
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;import com.itextpdf.text.*;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.itextpdf.text.pdf.PdfWriter;
/*** 方法简介:生成PDF** 作者:     tcy* 时间:     2022-02-28*/public void createTableFile(String newPDFPath) throws AppException, IOException, DocumentException {//生成PDF文档//新建Document对象,并打开Document document = new Document(PageSize.A4);try{//创建文件File file = new File(newPDFPath);PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream(file));//文档属性document.addTitle("Titl");document.addAuthor("Author");document.addSubject("Subject");document.addKeywords("Keywords");document.addCreator("Creator");//页边空白document.setMargins(60, 60, 80, 40);document.open();//添加内容//1、标题document.add(PdfFontUtils.getFont(1, "信息采集表"));//创建一个空行
//            document.add(Chunk.NEWLINE );//2、表格//2.1 设置表格列数:6PdfPTable table = new PdfPTable(6);//2.2 指定表格每一列宽度table.setWidths(new float[] {0.15f,0.15f,0.15f,0.15f,0.15f,0.25f});//2.3添加第一行内容//2.3.1添加第1列内容PdfPCell cell = new PdfPCell(PdfFontUtils.getFont(7, "字段1"));//设置第一行第一列背景颜色cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//2.3.2添加第2列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);//2.3.3添加第3列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段2"));//设置背景颜色cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//2.3.4添加第4列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);//2.3.5添加第5列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段3"));//设置背景颜色cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//2.3.6添加第6列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);//2.4添加第2行,跨所有行cell = new PdfPCell(PdfFontUtils.getFont(7, "字段4"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));//设置跨行数cell.setColspan(6);table.addCell(cell);//2.5添加第三行内容//2.5.1添加第1列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段5"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));//设置跨行数cell.setColspan(3);table.addCell(cell);//2.5.2添加第2列内容cell = new PdfPCell(PdfFontUtils.getFont(7,"字段6"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));//设置跨行数cell.setColspan(2);table.addCell(cell);//2.5.3添加第3列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段7"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//2.6添加第四行内容//2.6.1添加第1列内容cell = new PdfPCell(PdfFontUtils.getFont(7,  "内容"));//设置跨行数cell.setColspan(3);table.addCell(cell);//2.6.2添加第2列内容cell = new PdfPCell(PdfFontUtils.getFont(7,  "内容"));//设置跨行数cell.setColspan(2);table.addCell(cell);//2.6.3添加第3列内容cell = new PdfPCell(PdfFontUtils.getFont(7,  "内容"));table.addCell(cell);//2.7添加第五行内容//2.7.1添加第1列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段8"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));//设置跨行数cell.setColspan(2);table.addCell(cell);//2.7.2添加第2列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段9"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));//设置跨行数cell.setColspan(3);table.addCell(cell);//2.7.3添加第3列内容cell = new PdfPCell(PdfFontUtils.getFont(7,"字段10"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//2.8添加第六行内容//2.8.1添加第1列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));//设置跨行数cell.setColspan(2);table.addCell(cell);//2.8.2添加第2列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));//设置跨行数cell.setColspan(3);table.addCell(cell);//2.8.3添加第3列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);//2.9添加tabledocument.add(table);//3、新建一个表-8列table = new PdfPTable(8);//3.1添加第1行,跨所有行cell = new PdfPCell(PdfFontUtils.getFont(7, "字段11"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));//设置跨行数cell.setColspan(8);table.addCell(cell);//3.2添加第2行内容//3.2.1添加第1列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段12"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));cell.setColspan(2);table.addCell(cell);//3.2.2添加第2列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段13"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));cell.setColspan(2);table.addCell(cell);//3.2.3添加第3列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段14"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));cell.setColspan(2);table.addCell(cell);//3.2.4添加第4列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段15"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));cell.setColspan(2);table.addCell(cell);//3.3添加第3行内容//3.3.1添加第1列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));cell.setColspan(2);table.addCell(cell);//3.3.2添加第2列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));cell.setColspan(2);table.addCell(cell);//3.3.3添加第3列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));cell.setColspan(2);table.addCell(cell);//3.3.4添加第4列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));cell.setColspan(2);table.addCell(cell);//3.4添加第4行,跨所有行cell = new PdfPCell(PdfFontUtils.getFont(7, "字段16"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));//设置跨行数cell.setColspan(8);table.addCell(cell);//循环加入行为记录表格-length:需要循环添加的数据的多少for (int i = 1; i <= length; i++){//取数字的中文表达String num = this.getNumberChinese(Integer.toString(i));//3.5添加第5行(字段17),跨所有行-------我这里的字段17格式类似于:(一)行为一cell = new PdfPCell(PdfFontUtils.getFont(6, "(" + num + ")、行为" + num));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));//设置跨行数cell.setColspan(8);table.addCell(cell);//3.6添加第6行//3.6.1添加第1列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段18"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));cell.setColspan(2);table.addCell(cell);//3.6.2添加第2列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段19"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));cell.setColspan(2);table.addCell(cell);//3.6.3添加第3列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段20"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));cell.setColspan(2);table.addCell(cell);//3.6.4添加第4列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段21"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));cell.setColspan(2);table.addCell(cell);//3.7添加第7行//3.7.1添加第1列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));cell.setColspan(2);table.addCell(cell);//3.7.2添加第2列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));cell.setColspan(2);table.addCell(cell);//3.7.3添加第3列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));cell.setColspan(2);table.addCell(cell);//3.7.4添加第4列内容cell = new PdfPCell(PdfFontUtils.getFont(7,"内容"));cell.setColspan(2);table.addCell(cell);//3.8添加第8行,跨所有行cell = new PdfPCell(PdfFontUtils.getFont(6, "字段22"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));//设置跨行数cell.setColspan(8);table.addCell(cell);//3.10添加第9行//3.10.1添加第1列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段23"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//3.10.2添加第2列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);//3.10.3添加第3列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段24"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//3.10.4添加第4列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);//3.10.5添加第5列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段25"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//3.10.6添加第6列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);//3.10.7添加第7列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段26"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//3.10.8添加第8列内容cell = new PdfPCell(PdfFontUtils.getFont(7,"内容"));table.addCell(cell);//3.11添加第10行//3.11.1添加第1列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段27"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//3.11.2添加第2列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);//3.11.3添加第3列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段28"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//3.11.4添加第4列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);//3.11.5添加第5列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段29"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//3.11.6添加第6列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);//3.11.7添加第7列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段30"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//3.11.8添加第8列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);//3.12添加第11行//3.12.1添加第1列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段31"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//3.12.2添加第2列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);//3.12.3添加第3列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段32"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//3.12.4添加第4列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);//3.12.5添加第5列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段33"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//3.12.6添加第6列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);//3.12.7添加第7列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段34"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//3.12.8添加第8列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);//3.13添加第12行//3.13.1添加第1列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段35"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//3.13.2添加第2列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);//3.13.3添加第3列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段36"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//3.13.4添加第4列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);//3.13.5添加第5列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段37"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//3.13.6添加第6列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);//3.13.7添加第7列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "字段38"));cell.setBackgroundColor(new BaseColor(0xC0,0xC0,0xC0));table.addCell(cell);//3.13.8添加第8列内容cell = new PdfPCell(PdfFontUtils.getFont(7, "内容"));table.addCell(cell);}//3.14添加tabledocument.add(table);}catch (Exception e){e.printStackTrace();}//4、关闭documentdocument.close();}/*** 方法简介:将数字123转为中文格式一二三** 作者:     tcy* 时间:     2022-02-28*/private String getNumberChinese(String number) {String result = "";//存储数字与中文表示的键值对Map<String,String> map= new HashMap<String,String>();map.put("1","一");map.put("2","二");map.put("3","三");map.put("4","四");map.put("5","五");map.put("6","六");map.put("7","七");map.put("8","八");map.put("9","九");int len = number.length();if (len == 1){result = map.get(number);}else if (len == 2){result = map.get(number.substring(0,1)) + "十" + map.get(number.substring(1,2));}return result;}

4、PdfFontUtils 工具类

import java.io.IOException;
import java.net.URL;
import org.springframework.core.io.ClassPathResource;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;public class PdfFontUtils {/*** 文档排版*/public static Paragraph getFont(int type, String text) throws IOException{BaseFont songti = null;BaseFont heiti = null;BaseFont fangsong = null;URL url = new ClassPathResource("META-INF/resources/static/font/STZHONGS.TTF").getURL();String song = url.getPath();url = new ClassPathResource("META-INF/resources/static/font/SIMHEI.TTF").getURL();String hei = url.getPath();url = new ClassPathResource("META-INF/resources/static/font/STFANGSO.TTF").getURL();String fang = url.getPath();try {/*** 设置字体* * windows路径字体* FONT_TYPE=C:/Windows/fonts/simsun.ttc* linux路径字体 宋体 (如果没有这个字体文件,就将windows的字体传上去)* FONT_TYPE=/usr/share/fonts/win/simsun.ttc*/songti = BaseFont.createFont(song, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);heiti = BaseFont.createFont(hei, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);fangsong = BaseFont.createFont(fang, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);} catch (DocumentException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}Font font1 = new Font(songti);Font font2 = new Font(heiti);Font font3 = new Font(fangsong);if(1 == type){//1-标题font1.setSize(22f);} else if(2 == type){//2-标题一font2.setSize(16f);} else if(3 == type){//3-标题二font3.setSize(16f);} else if(4 == type){//4-标题三font3.setSize(16f);} else if(5 == type){//5-正文font3.setSize(10.5f);} else if(6 == type){//6-左对齐font3.setSize(10.5f);} else {font3.setSize(10.5f);//默认大小}//注: 字体必须和 文字一起newParagraph paragraph = null;if(1 == type){paragraph = new Paragraph(text, font1);paragraph.setAlignment(Paragraph.ALIGN_CENTER);//居中paragraph.setSpacingBefore(40f);//上间距paragraph.setSpacingAfter(30f);//下间距} else if(2 == type){//2-标题一paragraph = new Paragraph(text, font2);paragraph.setAlignment(Element.ALIGN_JUSTIFIED); //默认paragraph.setFirstLineIndent(40);paragraph.setSpacingBefore(20f);//上间距paragraph.setSpacingAfter(30f);//下间距} else if(3 == type){paragraph = new Paragraph(text, font3);paragraph.setFirstLineIndent(40);paragraph.setSpacingBefore(20f);//上间距paragraph.setSpacingAfter(1f);//下间距} else if(4 == type){//4-标题三paragraph = new Paragraph(text, font3);paragraph.setAlignment(Element.ALIGN_JUSTIFIED);paragraph.setFirstLineIndent(40);paragraph.setSpacingBefore(2f);//上间距paragraph.setSpacingAfter(2f);//下间距paragraph.setLeading(40f);//设置行间距} else if(5 == type){paragraph = new Paragraph(text, font3);paragraph.setAlignment(Element.ALIGN_JUSTIFIED); paragraph.setFirstLineIndent(40);//首行缩进paragraph.setSpacingBefore(1f);//上间距paragraph.setSpacingAfter(1f);//下间距} else if(6 == type){//左对齐paragraph = new Paragraph(text, font3);paragraph.setAlignment(Element.ALIGN_LEFT); paragraph.setSpacingBefore(1f);//上间距paragraph.setSpacingAfter(1f);//下间距}else if(7 == type){paragraph = new Paragraph(text, font3);paragraph.setAlignment(Element.ALIGN_CENTER);paragraph.setSpacingBefore(1f);//上间距paragraph.setSpacingAfter(1f);//下间距}return paragraph;}
}

SpringBoot实现生成pdf文件(含表格)相关推荐

  1. SpringBoot 生成pdf文件(含报表)

    使用 iText 导出pdf表格 iText 是一种生成PDF报表的Java组件,其maven依赖如下: <dependency><groupId>com.itextpdf&l ...

  2. itextpdf添加表格元素_itext生成pdf文件-表格

    生成pdf常用的插件有iReport.和itext,这里将使用itext生成pdf文件. 多于的话不说直接上demo和需要的jar,如果pdf中有图片要画的话可以用jfreeChart画. packa ...

  3. SpringBoot+Vue+mybatis生成pdf文件(表头跟页码,适应上传linux服务器后的操作)

    SpringBoot+Vue+mybatis生成pdf文件(表头跟页码,适应上传linux服务器后的操作) 为什么使用后端去生成 说明 依赖 后端目录 控制器代码 模板代码 前端代碼 最終效果 为什么 ...

  4. springboot 基于.ftl模板生成pdf文件

    目录 Demo前置简述 生成pdf内容 项目结构 主要实现 api测试 完整代码地址 Demo前置简述 实现功能:用户个人信息测试数据加上ftl模板得到html字符串,然后根据html字符串生成pdf ...

  5. 使用iText生成PDF文件中创建表格

    前言 使用iText的JAR包如下 <dependency><groupId>com.itextpdf</groupId><artifactId>ite ...

  6. springboot根据模板生成pdf文件

    前言 最近碰到一个需求,给定一个word/pdf的模板,生成pdf文件,包含pdf文件之间的合并等操作.试了很多种方法(也可能是本人比较菜的原因),只有下面这个方法走通了,做下记录. 文件生成 1 准 ...

  7. 使用itext将HTML 生成PDF文件

    1.使用itext将HTML模板生成PDF文件 HTML模板注意事项: 所有标签按语法正确闭合,否则会报错 table用border设置表格 如果下载到空白文件,看看整体XML的宽度 width使用% ...

  8. java使用world模板动态生成PDF文件

    根据项目需求,需要用到一个功能,根据页面参数需要动态的生成一个world,并将world生成两份PDF文件,一份正式文件,一份临时的电子文件(带有二维码,扫描可以下载正式文件的电子版本).同时上传到文 ...

  9. 如何动态生成pdf文件?

    pdfService系统 一. 背景 在许多开发需求中都有动态生成pdf文件的需求,例如根据已有的json字符串渲染到一个表格中,然后生成对应的PDF文档,以往的解决方法是调用许多个接口生产pdf文件 ...

最新文章

  1. sysbench的安装和做性能测试
  2. 多继承的构造函数和析构函数
  3. 非整数倍数数据位宽转换8to12
  4. python_GUI操作(鼠标、键盘)
  5. oracle 解释计划权限,ACL的使用:主机权限规划管理--Oracle脚本
  6. 微软彻底拥抱 Python!
  7. 详细解读Spark的数据分析引擎:Spark SQL
  8. 关于机器学习的十个实例
  9. 好用的小工具系列之---lombok--扔掉傻瓜式书写,精简你的代码,节约你的时间
  10. qt调用python(不是python调用qt,不是使用pyqt模块)
  11. 《华为研发》阅读 - 15 (分解“满汉全席”,“先谋而后动”)
  12. 【P44】DC-DC隔离模块,解决蓝牙共地干扰问题
  13. 文献阅读笔记 《具有目标定位和边界保持的基于个人注视的目标分割》
  14. 解决ERROR: Cannot uninstall ‘PyYAML‘. It is a distutils installed project and thus we cannot accuratel
  15. Win10下双系统Ubuntu14.04+GTX1070+CUDAcuDNN+Tensorflow环境搭建
  16. 宝塔面板如何添加免费的waf防火墙?
  17. windows设置java项目jar包开机自启
  18. 小米路由器 不显示 连接设备连接到服务器,小米路由器隐藏网络后怎么连接
  19. 【JS】1410- 一行 Object.keys() 引发的思考
  20. 采轩服饰工业园选择飞鱼星完成无线覆盖

热门文章

  1. 如何实现一个邮件的发送
  2. 牛客P19836 裴蜀定理+莫比乌斯反演+杜教筛
  3. 华为OD机试 - 获得完美走位(Python)| 真题+思路+代码
  4. 某计算机的硬盘容量是100G,【硬件玩家】让你硬盘分区得到整数100G,200G容量【图文实例】...
  5. Laydate控件设置初始与结束时间限制
  6. HBDY-9型静态型无源电压继电器
  7. nc\hdf\h5数据格式批量提取为tif格式
  8. Android IJKPlayer 直播RTMP
  9. 前端接口神器之 json server 使用详解
  10. 从谭浩强《C程序设计》上摘录的ASCII码表(常用字符与ASCII代码对照表)