basb-cli
Version:
Blog as Second Brain!
51 lines (48 loc) • 1.56 kB
HTML
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>KaTeX Renderer</title>
<style>
#render-target {
width: fit-content;
padding: 4px;
}
</style>
<link rel="stylesheet" href="../../../frontend/libs/katex/katex.css">
</head>
<body>
<div id="render-target"></div>
<script type="module">
import katex from "../../../frontend/libs/katex/katex.js"
window.katex = katex
</script>
<script>
const { ipcRenderer } = require("electron")
const html2canvas = require("html2canvas")
const { writeFileSync } = require("node:fs")
ipcRenderer.once("chart-content", async (_, {
chartContent,
renderOptions,
savePath,
}) => {
const targetEl = document.querySelector("#render-target")
try {
katex.render(chartContent, targetEl, renderOptions)
} catch(err) {
ipcRenderer.send("render-error", err.message)
return
}
const canvas = await html2canvas(targetEl)
document.body.appendChild(canvas)
canvas.toBlob(async blob => {
const buffer = await blob.arrayBuffer()
const viewer = new DataView(buffer)
writeFileSync(savePath, viewer)
ipcRenderer.send("render-ended")
})
})
</script>
</body>
</html>