博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(十一)Electron 导入导出文件
阅读量:5933 次
发布时间:2019-06-19

本文共 1830 字,大约阅读时间需要 6 分钟。

主要功能:

1、导入md文件 2、导出md文件 3、导出html文件 4、导出pdf文件

主要使用技术为nodejsfs模块,以及electron

导出逻辑

使用dialog.showSaveDialog获取导出文件的路径,然后调用fs.writeFileSync同步写入文件即可。

var filters = [  {      name: filename,      extensions: [type] // 文件后缀名类型, 如md  }]var filePath = dialog.showSaveDialog({   filters,   defaultPath: filename,   title: '导出',   buttonLabel: '导出'})复制代码

导出md文件

这个比较简单,直接将md写入文件即可:

fs.writeFileSync(filePath, content, 'utf8')复制代码

导出Html文件

首先需要通过editor实例获取html源码,方法如下:

let html = this.$refs.editor.d_render复制代码

然后通过一个html页包装后写入文件即可:

function getHtml(title, body) {    return `              
${title}

${title}

${body} `}复制代码

可以自定义一些样式等。

导出PDF文件

electronwebContents提供了一个方法,我们可以直接使用这个方法来导出PDF。

逻辑是先将内容包装成html后加载到webContents主进程中,然后调用打印方法。

代码如下:

content = getHtml(title, html)    // 将获取到的html文件存入一个临时文件内  let tmpPath = path.join(userDataPath, 'tmp.html')  fs.writeFileSync(tmpPath, content, 'utf8')  let win = new BrowserWindow({      width: 768,      height: 1024,      show: false  })  // 创建窗口加载html文件  win.loadURL('file://' + tmpPath)  let contents = win.webContents  // 监听加载成功事件  contents.on('did-finish-load', () => {    // 调用打印接口,回调文件buffer数据      contents.printToPDF({}, (error, data) => {          if (error) throw error          // 写入文件          fs.writeFileSync(filePath, data)          // 关闭窗口          win.close()          // 删除HTML文件          fs.unlinkSync(tmpPath)      })  })复制代码

导入文件

使用dialog.showOpenDialog方法,获取要导入的文件路径。

let path = dialog.showOpenDialog({       filters: [           {               name: 'MD文件',               extensions: ['md']           }       ],       properties: ['openFile'],       message: '选择要导入的Mackdown文件',       buttonLabel: '导入'   })复制代码

然后调用fs.readFileSync读取文件即可。

博客地址:

更多精彩,请关注我的公众号!

转载于:https://juejin.im/post/5b6abf0c6fb9a04fab4537fd

你可能感兴趣的文章
Linux下通过配置Crontab实现进程守护
查看>>
ios 打包上传Appstore 时报的错误 90101 90149
查看>>
Oracle推出轻量级Java微服务框架Helidon
查看>>
密码概述
查看>>
nagios+nrpe监控配置错误日志集
查看>>
Wireless在域里面实施WPA认证设定应用
查看>>
澳大利亚政府想让ISP拦截恶意软件
查看>>
《数据分析实战:基于EXCEL和SPSS系列工具的实践》——3.4 数据量太大了怎么办...
查看>>
JavaScript应用开发实践指南迷你书
查看>>
autoconf,automake,libtool
查看>>
jQuery的技巧01
查看>>
基于泛型实现的ibatis通用分页查询
查看>>
gopacket 使用
查看>>
AlertDialog对话框
查看>>
我的友情链接
查看>>
办公室几台电脑怎么连一台打印机的具体步骤
查看>>
linux安全---cacti+ntop监控
查看>>
鸟哥的linux私房菜-shell简单学习-1
查看>>
nagios配置监控的一些思路和工作流程
查看>>
iptables+layer7实现访问控制+netfilter/iptables基础
查看>>