终于把Markdown导出的PDF的样式调整满意了

作为程序员,写文档的工作和写代码的工作量其实是差不多的,那些架构师级别的程序员可能写文档的时间还要比写代码的时间多。一个好用的Markdown必须有以下特性:

  1. 功能足够丰富,有足够的能力来表达自己的想法。Mermaid很大程序满足了程序员从代码到图形的表述能力,Tools.top的Markdown编辑器已升级到最新版Mermaid,⽀持12种图表类型,下一步是支持用户在线白板画图能力。

  2. 支持分享。Tools.top的Markdown编辑器支持多种模式的导出:

  • 无损HTML导出
  • 图片型PDF导出(查看者无法复制PDF中的内容)
  • 原生PDF导出,支持EMOJI和Mermaid图表/图片的导出,支持代码高亮

其实要做到支持中文,支持EMOJI,支持Mermaid图表的导出需要比较复杂的实现,需要服务器端来支持,一开始在实现中文支持的时候就遇到很大的问题,OPENPDF的库调了半天也没有调出来,最后使用了wkhtmltopdf 才实现中文的显示。

然后EMOJI 的实现也比较麻烦,服务器端的字体只能支持少量EMOJI,最后把整个TWEMOJI库下载到服务器端,让服务器端在做转换之前把所有EMOJI替换成图片才搞定的。

Mermaid图表的支持也是费了较大的周折,一开始我生成HTML是依赖Mermaid.JS库的,PDF生成库支持JS的很少,也不好。后来我在客户端支持生成SVG,不依赖JS了。可是wkhtmltopdf对SVG的支持也不太好,后来我在客户端把所有SVG转成PNG图片,然后以BASE64的编码上传给服务器的PDF生成API才搞定的。

有些PDF会比较大,有时候同步模式会出现超时情况,我为用户提供了异步任务模式,解决了大PDF生成的问题。最终大家看到的就是下面截图的样子的PDF。

欢迎大家试用并提意见: https://md.tools.top

image.png
image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容