chatgpt-web icon indicating copy to clipboard operation
chatgpt-web copied to clipboard

加一个导出成 md pdf png 的功能吧

Open hfpp2012copy opened this issue 1 year ago • 5 comments

image

类似这个,真的很需要

https://chrome.google.com/webstore/detail/chatgpt-prompt-genius/jjdnakkfjnnbbckhifcfchagnpofjffo

hfpp2012copy avatar Mar 04 '23 12:03 hfpp2012copy

感觉需要关注几点:

  1. 当前整个会话的都需要导出,还是可以选择某一回答导出
  2. 导出的 pdf 是文字可编辑的,还是整个图片

uxiew avatar Mar 05 '23 02:03 uxiew

感觉需要关注几点:

  1. 当前整个会话的都需要导出,还是可以选择某一回答导出
  2. 导出的 pdf 是文字可编辑的,还是整个图片
  1. 整个会话导出
  2. 是图片

hfpp2012copy avatar Mar 05 '23 05:03 hfpp2012copy

我现在是手动完成这个工作:

整个会话导出为 markdown 。

对于这一点又有这样的问题:

  • 如何在一个 markdown 中标记某个话框的起止
  • 都有哪些信息可以保留

我目前的方案是这样的:

  • 使用三级或四级标题划分话框
  • 保留的信息有话框内容、话框来自谁、时间

具体如下:

image

image

这是代码:

### asker: <sup>`2023/3/4 21:55:25`</sup>

我有一个变量 `a` 类型是 `Promise<string>` 我想调用 `.then` 把其中的字符串写入我的剪贴板,该怎么写

#### chatgpt: <sup>`2023/3/4 21:55:34`</sup>

您可以使用 `navigator.clipboard.writeText()` 方法将 `Promise` 中的字符串写入剪贴板。例如:

```typescript
a.then((str) => {
  navigator.clipboard.writeText(str);
});
```

请注意,此操作会异步进行,并且在用户授权后才能生效(例如,当页面处于活动状态并且剪贴板访问权限已被授予时)。

### asker: <sup>`2023/3/4 23:10:55`</sup>

~~~ typescript
a.then((str) => {
  navigator.clipboard.writeText(str);
});
~~~

对于这部分代码,如果用户拒绝或者超时,一般可以怎么处理?

#### chatgpt: <sup>`2023/3/4 23:11:02`</sup>

这部分代码是使用 Promise 对象调用 `then()` 方法,如果用户拒绝或超时,可以在 `then()` 方法中的第二个参数添加一个回调函数作为 Promise 的 rejection handler 来处理错误情况。例如:

```typescript
a.then(
  (str) => {
    navigator.clipboard.writeText(str);
  },
  (err) => {
    // 处理错误情况
    console.error(err);
  }
);
```

此外,也可以在 `navigator.clipboard.writeText()` 方法中使用 `catch()` 方法来捕获异步操作可能抛出的异常。例如:

```typescript
a.then((str) => {
  navigator.clipboard
    .writeText(str)
    .catch((err) => {
      // 处理错误情况
      console.error(err);
    });
});
```

该方案的缺点:

  • 渲染后看起来还是乱乱的
  • 如果话框内出现了对标题的使用就会冲突

还有一个更正这个缺点的方案:

  • 对所有的话框行用 > 增加一层引用

但手动做这个就太麻烦了,几乎每行都要开头加个什么。

(这时候我会想如果有一个字符界面的话或许会很方便直接重定向文本就行了)


更新:

对于时间的表示,这样或许更好看一些:

### <sup><kbd><var>2023/3/3 18:36:55</var></kbd></sup> asker: 

...

#### <sup><kbd><var></var>2023/3/3 18:37:02</kbd></sup> chatgpt: 

...

以及,如果要把一场对话视为一个参考资料,还是把双方对话内容引用会严谨一些,也可以区分不同文本,像这样:

### <sup><kbd><var>2023/3/3 18:36:55</var></kbd></sup> asker: 

> ...
> ...
> 

#### <sup><kbd><var></var>2023/3/3 18:37:02</kbd></sup> chatgpt: 

> ...
> ...
> 

另外,可以增加标识来表明这是哪一对对话,像这样:

### <sup><kbd><var>(0) 2023/3/3 18:36:55</var></kbd></sup> asker: 

> ...
> ...
> 

#### <sup><kbd><var></var>(0) 2023/3/3 18:37:02</kbd></sup> chatgpt: 

> ...
> ...
> 

### <sup><kbd><var>(1) 2023/3/4 18:36:55</var></kbd></sup> asker: 

> ...
> ...
> 

#### <sup><kbd><var></var>(1) 2023/3/4 18:37:02</kbd></sup> chatgpt: 

> ...
> ...
> 

### <sup><kbd><var>(2) 2023/3/5 18:36:55</var></kbd></sup> asker: 

> ...
> ...
> 

#### <sup><kbd><var></var>(2) 2023/3/5 18:37:02</kbd></sup> chatgpt: 

> ...
> ...
> 

这是我的建议。

yhm-amber avatar Mar 05 '23 05:03 yhm-amber

那个插件装一下试下,就知道 md 的结果了

hfpp2012copy avatar Mar 06 '23 08:03 hfpp2012copy

那个插件装一下试下,就知道 md 的结果了

哦,没看到有个插件链接。。。

yhm-amber avatar Mar 06 '23 08:03 yhm-amber

那个插件装一下试下,就知道 md 的结果了

哦,没看到有个插件链接。。。

https://chrome.google.com/webstore/detail/chatgpt-prompt-genius/jjdnakkfjnnbbckhifcfchagnpofjffo

hfpp2012copy avatar Mar 07 '23 03:03 hfpp2012copy

2.10.0 添加了导出为图片

Chanzhaoyu avatar Mar 07 '23 14:03 Chanzhaoyu

<kbd><var>

抄了你的格式 https://github.com/swuecho/chat/commit/5e819a49c80297e4176ca8c3ce8787ab6fb7a5bd

多谢!

swuecho avatar Apr 07 '23 08:04 swuecho