Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(export): 修复图片引发的导出问题 #294

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

rade-f
Copy link

@rade-f rade-f commented Nov 15, 2024

修复以下两个图片导出问题:

  1. 图片 src 为空时导致导出图片错误,目前导出前进行过滤,导出时对应图片为空 符合预期(后续发现图片资源加载报错时也会出现此错误,但查看文档后没找到忽略的选项,导出前进行加载尝试感觉代价又较大)。
  2. 跨域资源图片导致导出pptx文件无法打开,现在会将跨域图片转换为 Base64。

背景:
在使用 AI 生成 PPT 项目时,由于生成的数据不稳定,出现了以上问题。进行了特殊数据/普通数据及混合情况的测试,未发现额外带来的问题。pptx生成问题上与pptgenjs后续查到的作者推荐思路相同,但官方应该不会主动修改,参考issue
https://github.com/gitbrent/PptxGenJS/issues/318。
看到这是个很好的开源项目,希望做出一些贡献,第一次提交pr,可能有些不合适的地方,如有问题,我会尽量积极响应。

pptxError

修复以下两个图片导出问题:

1. 图片 src 为空时导致导出错误,现在为空时不展示图片。
2. 跨域资源图片导致导出文件无法打开,现在会将跨域图片转换为 Base64。

背景:
在使用 AI 生成 PPT 项目时,由于生成的数据不稳定,出现了以上问题。此提交修复了这些问题。
@pipipi-pikachu
Copy link
Owner

谢谢pr,但针对这种错误,这里涉及到一个观点:

当某个问题导致了一个bug,我们应该:1. 修复这个bug;2. 杜绝这个问题

我个人的看法是:如果这个问题的出现是确认可控的,且没有历史包袱,那么应该选择杜绝问题。

所以我觉得更好的做法是从源头上处理,数据进入到程序中的途径是有限的,无非剪贴板、导入文件、主动数据注入几种,完全可以在这些时机对数据进行检查或者修复,而且事实上“从源头处杜绝”和“在可能异常的功能做兼容”两种方式,不仅仅是处理的时机不同,而是有本质上的区别,因为当我们去做后者的工作时,表示程序中已经出现错误了。

以错误图片地址为例,程序中出现异常图片时就应该马上处理,而不是等到导出时,一个在工作中容易出现的错误就是:用户引用了一些别的网站的资源,开始看起来是正常的,过一段时间后发现无法访问了(例如资源链接带有时间鉴权信息、资源被对方下架等),事情真到了这一步可能就很难处理了。

回到这里,我觉得处理方式本身没问题,但应该在AI 生成 PPT数据的时候就去做这个检查和修复,确保进入程序的数据是OK的。

我其实在做粘贴图片链接自动转为图片功能的时候也遇到过一样的问题:确保符合条件的URL才能被转为图片

@rade-f
Copy link
Author

rade-f commented Nov 15, 2024

好的,感谢回复。非常理解这个观点,作为ppt编辑及相关功能模块,我们更应该保证它的纯净,针对业务项目来说,对此的导出报错应该是一个提示或者警告(相应资源的可靠性)。
或许我们可以在导出错误时,将这个变为一个错误提示,使它变得更加友好?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants