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

希望有开发经验的大佬搞一个适配WPS的Zotero插件 #43

Open
lon91ong opened this issue Jun 19, 2021 · 9 comments
Open

希望有开发经验的大佬搞一个适配WPS的Zotero插件 #43

lon91ong opened this issue Jun 19, 2021 · 9 comments

Comments

@lon91ong
Copy link

lon91ong commented Jun 19, 2021

不清楚为什么WPS官方论坛关闭了, 找到不反馈问题的渠道
目前WPS和MS Office的功能基本上完全看齐了, 甚至VBA脚本都很少需要改动就能完美运行.
只有插件这块儿适配的不太好, Zotero的Word插件可以加载到WPS中,如下图
WPS加载Zotero插件
在插入引用时可以成功调用Zotero, 但是最后一步总是报错
报错

目前能在WPS中使用的文献管理工具只有NoteExpress, 使用体验实在是一言难尽
NoteExpress

希望开发大佬出手适配一下, 可能有用的参考在WPS下开发JS插件说明

@l0o0
Copy link
Owner

l0o0 commented Jul 12, 2021

这个目前超纲了,我也是刚学JS没多久的新人。

@Lemmingh
Copy link
Contributor

造一个 Zotero WPS Integration,确实超纲。


Zotero Word for Windows Integration 是一个跟 JavaScript 几乎没有关系的古董。

Zotero.dotm 是用 VBA 写的 Word Template,仅实现 Ribbon 菜单以及从 Word 发消息到 Zotero。

而主体是一个用 Visual C++/MFC 写的库,调用 Word Interop API 来实现引文管理功能。

这导致它不能在 WPS 上正常工作。


如果要支持 WPS,则需调用 WPS 文字 API。文档在 WPS 开放平台 > 开发文档 > WPS 客户端开发 > WPS 基础接口 > 文字 API 参考。

简单翻了一下 Zotero Connector 以及其他 Zotero integration plugin,感觉 WPS 加载项确实可以实现相关功能。

从 Zotero 拉取数据是大头。

目前就找到这么多。

如果哪位有兴趣,可以试一下。


如果不行,那么只好也走 OLE Automation。搜到几篇古老的文章,或许可参考:

@lon91ong
Copy link
Author

lon91ong commented Jul 22, 2021

造一个 Zotero WPS Integration,确实超纲。

Zotero Word for Windows Integration 是一个跟 JavaScript 几乎没有关系的古董。

Zotero.dotm 是用 VBA 写的 Word Template,仅实现 Ribbon 菜单以及从 Word 发消息到 Zotero。

而主体是一个用 Visual C++/MFC 写的库,调用 Word Interop API 来实现引文管理功能。

从 Zotero 拉取数据是大头。

从 Zotero 拉取数据是大头, 这个大头感觉不太准确, 从Zotero取数据毕竟VBA都已经实现了, 直接照着用JS重写即可, 真正的大头应该是用JS解析数据并实现用 Visual C++/MFC 写的库的功能

在WPS已经实现了JS宏JS加载项的前提下, 上述功能的实现不能说是"轻而易举", 起码够得上"水到渠成"
需要的是 或者独立代发经验丰富的大佬动手 或者有项目开发经验的大佬规划和领导...


以上, 最后一段可能有点"想当然"的意味, 请多见谅!

@lon91ong lon91ong changed the title 希望有开发经验的大佬搞一下Zotero Word插件在WPS 2019中的适配问题 希望有开发经验的大佬搞一个适配WPS的Zotero插件 Jul 22, 2021
@lon91ong

This comment has been minimized.

@Lemmingh
Copy link
Contributor

Zotero Word for Windows Integration 的那个 Zotero.dotm 仅仅是个 Ribbon,点一下就向 Zotero 发个指令,其他什么功能都没有。

所有逻辑都是在 Zotero 中实现的。

我理解的它的架构:

+------------------+    +------------------+
|  Microsoft Word  |    |      Zotero      |
|                  |    |                  |
| +-------------+  |    | +-------------+  |
| | Zotero.dotm |-------->|   Citation  |  |
| +-------------+  |    | |   handler   |  |
|                  |    | +-------------+  |
|                  |    |        ↕         |
| +-------------+  |    | +-------------+  |
| |   Document  |  |    | |   Glue JS   |  |
| +-------------+  |    | +-------------+  |
|        ↕         |    |        ↕         |
| +-------------+  |    | +-------------+  |
| | Interop API |<------->|    Native   |  |
| +-------------+  |    | +-------------+  |
|                  |    |                  |
+------------------+    +------------------+

"Zotero" pulls from and pushes to "Microsoft Word".


而做 WPS Integration,我认为应当采取这种方案:

+------------------+    +------------------+
|       WPS        |    |      Zotero      |
|                  |    |                  |
| +-------------+  |    | +-------------+  |
| |   Ribbon    |  |    | |   Citation  |  |
| |      /      |  |    | |   handler   |  |
| |   TaskPane  |  |    | +-------------+  |
| +-------------+  |    |        ↕         |
|        ↑         |    | +-------------+  |
|        |         |    | |   Custom    |  |
|        ↓         |    | |   endpoint  |  |
| +-------------+  |    | |   handler   |  |
| | Plugin host |<---+  | +-------------+  |
| +-------------+  | |  |        ↕         |
|        ↕         | |  | +-------------+  |
| +-------------+  | +--->|  Connector  |  |
| |   Document  |  |    | |   server    |  |
| +-------------+  |    | +-------------+  |
|                  |    |                  |
+------------------+    +------------------+

"WPS" pulls from "Zotero".

@lon91ong
Copy link
Author

@Lemmingh 是我理解的肤浅了, 刚刚用WPS打开Zotero.dotm查看源代码, 确实如你所言
但是用这种方案的话, 许多Zotero已经实现的工作必须都用JS加载项重做了, 比如: 丰富的引文格式, 工作量不是一般的大

@Lemmingh
Copy link
Contributor

丰富的引文格式

关键在 Custom endpoint handler 能做什么。

上面提到了 BBT,它在 Connector Server 上实现了许多 endpoint。按这个思路,利用 Zotero plugin,仍然可以让 Zotero 完成排版,最后 WPS 加载项这边拉取呈现和 metadata,再嵌入文档。(在 Word 上,是 Zotero 走 IA 把这些东西写进文档。)

但我不清楚 Zotero 5.0.71 增加的安全限制是怎么回事。如果是测 UA,可以想办法绕过。

@l0o0
Copy link
Owner

l0o0 commented Mar 15, 2022

目前有同学向wps发邮件,希望开发插件。wps也回应了,希望能早点出来。如果着急可以一起发邮件催一催

有同学收到WPS的消息是他们已经提供文档了,不负责开发🙃

@bigben446
Copy link

建了一个zotero-wps插件开发项目,感兴趣的同学一起去那边交流吧,争取早日搞定zotero的wps插件。zotero-wps插件开发的交流QQ群:1029775161,https://github.com/l0o0/Zotero-WPS

@l0o0 l0o0 closed this as completed Mar 27, 2023
@l0o0 l0o0 reopened this Mar 27, 2023
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

No branches or pull requests

4 participants