主要功能:
1、匯入md檔案 2、匯出md檔案 3、匯出html檔案 4、匯出pdf檔案
主要使用技術為nodejs
的fs
模組,以及electron
的dialog
匯出邏輯
使用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 `
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="CEditor">
<title>${title}</title>
<link rel="stylesheet" href="https://cyyjs.github.io/static/md.css">
</head>
<body class="markdown-body code-github">
<h1>${title}</h1>
${body}
</body>
</html>`
}
複製程式碼
可以自定義一些樣式等。
匯出PDF檔案
electron
的webContents
提供了一個printToPDF
方法,我們可以直接使用這個方法來匯出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
讀取檔案即可。
部落格地址: alibt.top
更多精彩,請關注我的公眾號!