如何使用 LotusScript 将富文本字段从 Notes 导出为 HTML?
我正在执行一项数据迁移任务,必须将一个较大的 Lotus Notes 应用程序导出到博客平台中。我的第一个任务是将 Lotus Notes 中的文章导出到 CSV 文件中。
我在 LotusScript 中创建了一个代理来将数据导出到 CSV 文件中。我使用此 IBM DeveloperWorks 论坛帖子的修改版本。它基本上完成了这项工作。但富文本字段的内容已去除任何格式。这不是我想要的,我希望富文本字段呈现为 HTML。
GetItemValue 方法的文档明确指出文本是呈现为纯文本。所以我开始研究可以检索 HTML 的东西。我在 IBM 文章 How To Access 中找到了 NotesMIMEEntity 类和一些示例代码使用 LotusScript 的富文本字段中的 HTML。
但要使上述文章中描述的技术发挥作用,富文本字段需要具有“将内容存储为 HTML 和 MIME”属性。我的 Lotus Notes 数据库并非如此。我尝试在相关字段上设置属性,但没有成功。
是否可以使用 NotesMIMEEntity 并在添加内容后设置“将内容存储为 HTML 和 MIME”属性,以导出呈现为 HTML 的字段?
或者,将 Notes 数据库富文本字段导出为 HTML 的选项有哪些?
额外信息:我正在使用 IBM Lotus Domino Designer 版本 8.5
I'm working on a data migration task, where I have to export a somewhat large Lotus Notes application into a blogging platform. My first task was to export the articles from Lotus Notes into CSV files.
I created a Agent in LotusScript to export the data into CSV files. I use a modified version of this IBM DeveloperWorks forum post. And it basically does the job. But the contents of the Rich Text field is stripped of any formatting. And this is not what I want, I want the Rich Text field rendered as HTML.
The documentation for the GetItemValue method explicitly states that the text is rendered into plain text. So I began to research for something that would retrieve the HTML. I found the NotesMIMEEntity class and some sample code in the IBM article How To Access HTML in a Rich Text Field Using LotusScript.
But for the technique described in the above article to work, the Rich Text field need to have the property "Store Contents as HTML and MIME". And this is not the case with my Lotus Notes database. I tried to set the property on the fields in question, but it didn't do the trick.
Is it possible to use the NotesMIMEEntity and set the "Store Contents as HTML and MIME" property after the content has been added, to export the field rendered as HTML?
Or what are my options for exporting the Notes database Rich Text fields as HTML?
Bonus information: I'm using IBM Lotus Domino Designer version 8.5
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
有一个相当未知的命令可以完全满足您的要求:使用命令 OpenField 检索 URL。
仅转换 Body 字段的示例:
There is this fairly unknown command that does exactly what you want: retrieve the URL using the command OpenField.
Example that converts only the Body-field:
这是我使用 OpenField 命令的方法,请参阅上面 D.Bugger 的帖子
Here is how I did it, using the OpenField command, see D.Bugger's post above
我建议查看 Midas 的 Rich Text LSX (http://www.geniisoft.com/showcase .nsf/MidasLSX)
我个人没有使用过,但我记得几年前它们是处理富文本的最佳选择。我敢打赌它可以帮你省去很多麻烦。
至于 NotesMIMEEntity 类,我不认为有办法将 RichText 转换为 MIME,只能将 MIME 转换为 RichText(或在文档中保留 MIME 以用于电子邮件发送)。
I'd suggest looking at Midas' Rich Text LSX (http://www.geniisoft.com/showcase.nsf/MidasLSX)
I haven't used the personally, but I remember them from years ago being the best option for working with Rich Text. I'd bet it saves you a lot of headaches.
As for the NotesMIMEEntity class, I don't believe there is a way to convert RichText to MIME, only MIME to RichText (or retain the MIME within the document for emailing purposes).
如果升级到 Notes Domino 8.5.1,则可以使用
NotesDocument
类的新ConvertToMIME
方法。请参阅文档。这应该做你想做的。另外,让 Domino 服务器呈现 RichText 的最简单方法是通过 url 调用实际检索它。设置一个仅包含 RichText 字段的简单表单,然后使用您最喜欢的 HTTP api 拉入页面。然后应该可以非常直接地拉出主体。
If you upgrade to Notes Domino 8.5.1 then you can use the new
ConvertToMIME
method of theNotesDocument
class. See the docs. This should do what you want.Alternativly the easiest way to get the Domino server to render the RichText will be to actually retrieve it via a url call. Set up a simple form that just has the RichText field and then use your favourite HTTP api to pull in the page. It should then be pretty straight forward to pull out the body.
保持简单。
将 BODY 字段更改为将内容存储为 HTML 和 MIME
在编辑模式下打开文档。
节省。
关闭。
您现在可以使用 NotesMIMEEntity 从脚本中获取所需内容。
Keep it simple.
Change the BODY field to Store contents as HTML and MIME
Open the doc in editmode.
Save.
Close.
You can now use the NotesMIMEEntity to get what you need from script.
您可以使用 NotesDXLExporter 类导出富文本并使用 XSLT 将输出转换为您需要的内容。
You can use the NotesDXLExporter class to export the Rich Text and use an XSLT to transform the output to what you need.
我知道您提到过使用 LotusScript,但是如果您不介意编写一个小型 Java 代理(在 Notes 客户端中),那么这可以相当容易地完成 - 并且不需要修改现有的表单设计。
基本思想是让您的 Java 代码通过本地主机 http 请求(这在 Java 中很简单)打开特定文档,并让您的代码捕获该 html 输出并将其保存回该文档。基本上,您可以让 Domino 渲染引擎来完成繁重的工作。
您需要执行以下操作:
我在类似的帖子中放置了一些示例代码:
如何使用lotusscript将文档中的文本和富文本字段转换为html?
I know you mentioned using LotusScript, but if you don't mind writing a small Java agent (in the Notes client), this can be done fairly easily - and there is no need to modify the existing form design.
The basic idea is to have your Java code open a particular document through a localhost http request (which is simple in Java) and to have your code capture that html output and save it back to that document. You basically allow the Domino rendering engine to do the heavy lifting.
You would want do this:
I put up some sample code in a similar SO post here:
How to convert text and rich text fields in a document to html using lotusscript?
适用于 Domino 10(尚未测试 9)
请参阅文档:
https: //help.hcltechsw.com/dom_designer/10.0.1/basic/H_CONVERTOHTML_METHOD_NOTESRICHTEXTITEM.html
UPDATE (2022)
自版本 11 起,HCL 不再支持此方法。该文档不包含任何有关该方法的信息。
我做了一些测试,它在 v12 中仍然有效,但 HCL 建议不要使用它。
Works in Domino 10 (have not tested with 9)
See documentation :
https://help.hcltechsw.com/dom_designer/10.0.1/basic/H_CONVERTOHTML_METHOD_NOTESRICHTEXTITEM.html
UPDATE (2022)
HCL no longer support this method since version 11. The documentation does not include any info about the method.
I have made some tests and it still works in v12 but HCL recommended to not use it.
Casper 的上述建议效果很好,但请确保 ACL 允许匿名访问,否则您的 HTML 将是登录表单中的 HTML
Casper's recommendation above works well, but make sure the ACL is such to allow Anonymous Access otherwise your HTML will be the HTML from your login form
如果您不需要专门从项目中获取 Richtext,则可以使用 ?OpenDocument,(至少)记录在此处: https://www.ibm.com/developerworks/lotus/library/ls-Domino_URL_cheat_sheet/
https:// www.ibm.com/support/knowledgecenter/SSVRGU_9.0.1/com.ibm.designer.domino.main.doc/H_ABOUT_URL_COMMANDS_FOR_OPENING_DOCUMENTS_BY_KEY.html
OpenDocument 还允许您扩展部分(我不确定 OpenField 是否这样做)
语法是:
http://Host/Database/View/DocumentUniversalID?OpenDocument
但请务必包含字符集参数 - 如果不指定 utf-8 作为字符集,日语文档将无法读取。
下面是我使用的方法,它接受 NotesDocument 并以字符串形式返回文档的 HTML。
If you do not need to get the Richtext from the items specifically, you can use ?OpenDocument, which is documented (at least) here: https://www.ibm.com/developerworks/lotus/library/ls-Domino_URL_cheat_sheet/
https://www.ibm.com/support/knowledgecenter/SSVRGU_9.0.1/com.ibm.designer.domino.main.doc/H_ABOUT_URL_COMMANDS_FOR_OPENING_DOCUMENTS_BY_KEY.html
OpenDocument also allows you to expand sections (I am unsure if OpenField does)
Syntax is:
http://Host/Database/View/DocumentUniversalID?OpenDocument
But be sure to include the charset parameter as well - Japanese documents were unreadable without specifying utf-8 as the charset.
Here is the method I use that takes a NotesDocument and returns the HTML for the doc as a string.