Skip to content
Go back

Inkflow Markdown:一次AI辅助开发的踩坑与实践之旅

Published:  at  12:27 AM

大家好,我是Byron。前段时间,因为一次不算太愉快的差旅经历(具体故事我在 V2EX 一次旅途中的小插曲,让我用AI做了个开源Markdown转PDF工具 里提过),我萌生了开发一款在线Markdown转PDF工具的想法。这个项目的初衷很简单:满足个人在特定场景下的需求,同时,也想正儿八经地全程让AI(主要是Gemini和ChatGPT)深度参与开发,看看AI作为“编程搭档”的能耐到底如何。

项目取名 Inkflow(雅辑 Markdown),目前已经开源在 GitHub Inkflow-Markdown-Editor,大家也可以直接访问 https://markdown.googleyixia.com 体验。

这篇博客,主要想记录一下开发过程中遇到的一些具体问题、我是如何“与AI共舞”以及一些“曲线救国”的小插曲。希望能给同样在探索AI辅助开发的朋友们提供一些真实的参考。

目录

Open 目录

小插曲一:PDF导出的“折腾”之路

我最初对PDF导出的设想是“所见即所得”,希望预览区的排版能尽可能完美地复刻到PDF中。

  1. 初探:AI推荐的PDF导出插件 最开始,我向AI描述了我的需求,它给我推荐了一个流行的前端PDF导出库。集成过程还算顺利,但实际效果却不尽如人意。

    • 问题1:内容压缩与过度留白 AI生成的初始代码,在处理较长的Markdown内容时,会把所有内容强行压缩到PDF的一页里。这导致当文章内容很多时,生成的PDF页面左右两侧会留下大片的空白,非常不美观。我和AI针对这个问题进行了好几轮“讨论”和代码调整,尝试了各种配置参数、分页逻辑,总算是让内容能够正常分页,排版看起来也舒服多了。
    • 问题2:渲染错位——线条与文字的“恩怨情仇” 好不容易解决了分页和留白,新的问题又冒了出来。在一些细节的渲染上,插件的表现不尽如人意。比如Markdown中的分隔线(三个短横线 ---)和表格边框,在生成的PDF中,它们的位置会比正常的文字内容略微靠上一些。这就导致文字和分隔线、文字和表格线之间挨得特别近,甚至出现部分重叠的情况,非常影响阅读体验。
  2. “死磕”与“放弃”:Google + AI 也束手无策 这个问题可把我给难住了。我又拉上AI,一起Google各种解决方案,尝试了调整CSS样式、修改插件内部渲染逻辑(在AI的帮助下理解了不少源码),甚至他又推荐了另外几个的库,但集成成本我觉得就太高了。

  3. 柳暗花明:回归浏览器本质——window.print() 就在我快要“放弃治疗”的时候,脑子里灵光一闪:浏览器自带的打印功能,不就能比较完美地将网页内容输出为PDF吗?而且它是真正意义上的“所见即所得”,能100%复刻网页上的渲染效果,包括CSS样式控制下的各种细节。

    于是,我果断调整方向,在 pdfService.ts 中改用 window.print() API。为了让打印效果更佳(比如去掉页眉页脚、控制边距等),我又和AI一起研究了 @media print CSS查询和打印相关的样式设置。最终,这个方案完美解决了之前的各种渲染和排版问题,虽然过程曲折,但结果令人满意。这也算是一个小小的教训:有时候最直接、最朴素的方法,反而最有效。

小插曲二:顺便,用ChatGPT生成了Logo与宣传图

除了核心代码,一个项目总得有点“门面”吧。Inkflow的Logo以及我之前在一些地方分享时用到的宣传图,其实也是AI的杰作。

我主要使用的是ChatGPT的图像生成能力。这里把我当时用的一些核心Prompt分享给大家,希望能给大家一点启发:

Inkflow Markdown Editor

ChatGPT 生成的宣传图

Inkflow Markdown Logo

ChatGPT 生成的 Logo

用AI生成设计素材,虽然可能不如专业设计师那么精细和富有创意,但对于个人开发者或者需要快速迭代原型的项目来说,确实是一个非常高效和低成本的选择。关键在于如何清晰、准确地向AI表达你的设计需求。

一些思考与总结

这次 Inkflow 的开发经历,让我对AI辅助编程有了更深的体会:

Inkflow 目前功能还很简单,主要是为了满足我个人的核心需求和完成这次AI实验。我把它开源出来,更多的是想记录这次探索,如果它恰好能对你有所启发,或者在某个时刻能帮你解决一个小问题,我会非常开心。

欢迎大家在 GitHub 上关注它,或者提出宝贵的意见!



Previous Post
我的油猴脚本开发日记:复刻 PopClip “Large Type” 功能的心路历程
Next Post
巴菲特的「人生投资」智慧:你会买入谁的10%,又会做空谁?