【发布时间】:2020-03-06 18:05:44
【问题描述】:
我正在使用带反应的电子进行 epub 项目,并使用 epub 解析 epub 文件。通过这个解析器,我能够获取css、ttf 这些文件。但是,这些文件不会以常规方式提供。例如,对于当前部分的 html,可能要导入 <link href="flow0003.css" rel="stylesheet" type="text/css"> 之类的 css,而不会加载此 css 文件。
要解决这个问题,是否可以将一些文件动态存储到 react 的公共文件夹中?
我一直在网上搜索,但出于安全原因,似乎不可能这样做。我还搜索了与电子类似的方法,但似乎没有可用的建议,因为该项目使用电子和反应。
顺便说一句,我可以像这样动态注入样式: Book.tsx
useEffect(() => {
const css = Object.values(book.manifest).filter(({ href }) => href.endsWith('.css'));
Promise.all(css.map(c => getCss(book, c.id)))
.then(arr => arr.join('\n'))
.then(styles => {
if (!ref.current) return;
ref.current.setAttribute('style', styles);
});
}, [book]);
但是,字体文件的嵌套导入无论如何都不起作用。
那么 Electron 是否可以通过 react 将样式表、字体文件存储到其公用文件夹中(并且以后也需要删除)?
我知道可以用 html 解析 img,style 的数据。例如,使用 react 的 dom.setAttribute 动态注入样式表。同理,img标签,可以像<img src={data:${mimeType};base64, ${imgData.toString('base64')}}>一样直接注入图片数据。那么是否有任何等效的加载字体的方法?
【问题讨论】:
标签: css reactjs electron styles font-face