1. 创建vue 项目
安装脚手架
npm install -g @vue/cli
创建项目
npm create project-demo
安装UI库 element-ui
npm i element-ui -Smain.jsimport ElementUI from 'element-ui'import 'element-ui/lib/theme-chalk/index.css'Vue.use(ElementUI, {size: 'small',menuType: 'text'})
实现功能一: 定义模板打印word
npm i docxtemplater pizzip jszip-utils file-saver jszip docxtemplater-image-module-free -S
使用:
import docxtemplater from "docxtemplater"import PizZip from "pizzip"import { saveAs } from "file-saver"import JSZipUtils from "jszip-utils"import JSZip from 'jszip'import ImageModule from "docxtemplater-image-module-free"export const dataURLToBase64 = (url) => {return new Promise((resolve, reject) => {// 判断下传入的地址是不是已经是base64const base64Regex = /^data:image\/(png|jpg|svg|svg\+xml);base64,/;if (base64Regex.test(url)) {return url;}const Img = new Image()let dataURL = ''Img.setAttribute('crossOrigin', 'Anonymous')Img.src = url + '?v=' + Math.random()Img.onload = function () {// 要先确保图片完整获取到,这是个异步事件const canvas = document.createElement('canvas') // 创建canvas元素const width = Img.width // 确保canvas的尺寸和图片一样const height = Img.heightcanvas.width = widthcanvas.height = heightcanvas.getContext('2d').drawImage(Img, 0, 0, width, height) // 将图片绘制到canvas中dataURL = canvas.toDataURL('image/jpeg') // 转换图片为dataURLresolve(dataURL)}})}export const exportWord = ({ file = "input.docx", data, filename = "下载文档", fileType = "docx", folder = "下载文档" } = {}) => {// 批量下载生成压缩包const Zip = new JSZip()if (Array.isArray(data)) {data.map((item, index) => {// 读取并获得模板文件的二进制内容JSZipUtils.getBinaryContent(file, (error, content) => {// input.docx是模板。我们在导出的时候,会根据此模板来导出对应的数据// 抛出异常if (error) {throw error}// 图片处理let opts = {}opts.centered = true; // 图片居中opts.getImage = (tagValue, tagName) => {return new Promise((resolve, reject) => {JSZipUtils.getBinaryContent(tagValue, (error, content) => {if (error) {return reject(error);}return resolve(content);});});}opts.getSize = () => {return [400, 200]}let imageModule = new ImageModule(opts);// 创建一个JSZip实例,内容为模板的内容const zip = new PizZip(content);// 创建并加载docxtemplater实例对象let doc = new docxtemplater().loadZip(zip).attachModule(imageModule).compile();let word = Zip.folder(folder)doc.resolveData(item).then(() => {doc.render();const out = doc.getZip().generate({type: "blob",mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",});word.file(`${item.filename ? item.filename : filename + index}.${fileType}`, out)})console.log(word, 'word')})})setTimeout(() => {Zip.generateAsync({ type: "blob" }) // zip下载.then((content) => {saveAs(content, `${folder}.zip`); // zip下载后的名字});}, 1000)} else {// 读取并获得模板文件的二进制内容JSZipUtils.getBinaryContent(file, (error, content) => {// 抛出异常if (error) {throw error}// 图片处理let opts = {}opts.centered = true; // 图片居中,在word模板中定义方式为{%image}opts.getImage = (tagValue, tagName) => {return new Promise((resolve, reject) => {JSZipUtils.getBinaryContent(tagValue, (error, content) => {if (error) {return reject(error);}return resolve(content);});});}opts.getSize = () => {return [600, 300]}let imageModule = new ImageModule(opts);const zip = new PizZip(content);// 创建并加载docxtemplater实例对象let doc = new docxtemplater().loadZip(zip).attachModule(imageModule).compile();// 如果包含异步数据,用resolveData,在回调之后再处理,如果都是同步数据,直接用setData就可以doc.resolveData(data).then(() => {try {// 用模板变量的值替换所有模板变量doc.render();// 生成一个代表docxtemplater对象的zip文件(不是一个真实的文件,而是在内存中的表示)const out = doc.getZip().generate({type: "blob",mimeType:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"});// 将目标文件对象保存为目标类型的文件,并命名saveAs(out, `${filename}.${fileType}`);} catch (error) {// 抛出异常const e = {message: error.message,name: error.name,stack: error.stack,properties: error.properties};console.log(JSON.stringify({ error: e }));throw error;}})});}}
使用:
import { exportWord } from './exportword'const config = {file: "input.docx", // 模板地址imgFiled: [],// 需要处理图片地址的字段data: this.form// 数据}exportWord(config)
word 模板文件及语法
直接赋值: {name}条件赋值:条件标签以#开始,/结束,如下{#if sex=1}男{/if}循环赋值:循环同样以#开始,/结束,如下{#table}姓名: {name}{/table}
git 删除远程分支:
git push origin --delete new_a
2.创建flutter web 项目
添加用户环境变量
export PUB_HOSTED_URL=https://pub.flutter-io.cnexport FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
设置用户变量path(设置flutter sdk)
1. 下载sdk 不要放到c盘,文件名称不要是中文2. 加sdk的目录加入到用户变量path中
检查配置
flutter doctor
创建web 项目
flutter create webflutter
运行项目
flutter run
3.JAVA 环境搭建
下载依赖
环境配置
一. JDK 配置
- (1)、复制JDK的安装目录:
- (2)、点击Path,在弹出的框后面添加上下载的jdk安装目录的bin目录,和jre的bin目录
- (3)、运行 cmd 输入java -version验证是否配置成功

二. Maven 配置
- (1)、复制Maven的安装目录
- (2)、新增MAVEN_HOME 用户变量
- (3)、环境变量path 添加 %MAVEN_HOME%\bin (maven安装的bin目录)
- (4)、cmd 运行 mvn —version 验证是否配置成功


配置maven 本地仓库

- 找到节点localRepository,在注释外添加
- 配置阿里云镜像
- 在settings.xml配置文件中找到mirrors节点
- 添加如下配置(注意要添加在
和 两个标签之间,其它配置同理)
<mirror><id>alimaven</id><mirrorOf>aliyun maven</mirrorOf><name>http://maven.aliyun.com/nexus/content/groups/public/</name><url>central</url></mirror>
配置jdk
- 在settings.xml配置文件中找到profiles节点
<!-- java版本 --><profile><id>jdk-1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties></profile>
三. 开发工具
IDEA下载:链接
有开源项目的可以去申请开源许可证 链接
四. Nacos 安装
Nacos 链接
附件内容:
https://www.aliyundrive.com/s/sFdxbw79LtP
启动nacos service: startup.cmd -m standalone
字体文件引入压缩: font-spider
4.IDEA 破解
版本:2021.3.3
- 安装包下载 (下载专业版Ultimate)
- 安装(安装前一定要卸载旧的版本)

安装完成后运行出现这个界面后直接点退出(Exit)
- 运行破解脚本程序

- 再次启动idea 输入激活码
或者:激活码获取地址:4W9NP3KV9E-eyJsaWNlbnNlSWQiOiI0VzlOUDNLVjlFIiwibGljZW5zZWVOYW1lIjoic2NyaXAgd2FuZSIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb24iOiIiLCJjaGVja0NvbmN1cnJlbnRVc2UiOmZhbHNlLCJwcm9kdWN0cyI6W3siY29kZSI6IklJIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wMS0yNCIsInBhaWRVcFRvIjoiMjAyMy0wMS0yNCIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUERCIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wMS0yNCIsInBhaWRVcFRvIjoiMjAyMy0wMS0yNCIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQV1MiLCJmYWxsYmFja0RhdGUiOiIyMDIzLTAxLTI0IiwicGFpZFVwVG8iOiIyMDIzLTAxLTI0IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBHTyIsImZhbGxiYWNrRGF0ZSI6IjIwMjMtMDEtMjQiLCJwYWlkVXBUbyI6IjIwMjMtMDEtMjQiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUFBTIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wMS0yNCIsInBhaWRVcFRvIjoiMjAyMy0wMS0yNCIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQUEMiLCJmYWxsYmFja0RhdGUiOiIyMDIzLTAxLTI0IiwicGFpZFVwVG8iOiIyMDIzLTAxLTI0IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBSQiIsImZhbGxiYWNrRGF0ZSI6IjIwMjMtMDEtMjQiLCJwYWlkVXBUbyI6IjIwMjMtMDEtMjQiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUFNXIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wMS0yNCIsInBhaWRVcFRvIjoiMjAyMy0wMS0yNCIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQU0kiLCJmYWxsYmFja0RhdGUiOiIyMDIzLTAxLTI0IiwicGFpZFVwVG8iOiIyMDIzLTAxLTI0IiwiZXh0ZW5kZWQiOnRydWV9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
破解文件下载
