gpt4 book ai didi

ckeditor - 将富文本和图像从一个文档复制到另一个文档中的 MIME

转载 作者:行者123 更新时间:2023-12-04 11:40:21 24 4
gpt4 key购买 nike

我有一个将富文本内容从一个文档复制到另一个文档中的 MIME 的解决方案。见 http://per.lausten.dk/blog/2012/12/xpages-dynamically-updating-rich-text-content-in-a-ckeditor.html .我在应用程序中使用它作为用户在新文档中插入内容模板并使内容在 CKEditor 中即时显示的一种方式。

问题在于复制中不包含内嵌图像 - 仅引用图像的临时存储。这意味着图像仅对当前 session 中的当前用户可见。所以不是很有用。

如何包含图像?

2013 年 10 月 4 日更新:
我仍在寻找解决方案。

最佳答案

我终于得到了它的工作。它要简单得多,甚至不涉及 MIME。诀窍是修改工作 HTML 中的图像标签以包含 base64 编码的图像,以便 src 标签可以使用这种格式(此处以 gif 为例):

src="data:image/gif;base64,<base64 encoded image>"

我已经有了从富文本字段中获取 HTML 所需的代码(请参阅我的问题中已经提到的 my blog post)。所以我需要的只是用正确的 src 格式替换图像 src 标签,包括 base64 编码的图像。

以下代码获取 HTML 并遍历每个包含的图像并修改 src 标签:
String html = this.document.getValue(fieldName).toString();
if (null != html) {
final List<FileRowData> fileRowDataList = document.getEmbeddedImagesList(fieldName);
if (null != fileRowDataList) {
final Matcher matcher = imgRegExp.matcher(html);
while (matcher.find()) {
String src = matcher.group();
final String srcToken = "src=\"";
final int x = src.indexOf(srcToken);
final int y = src.indexOf("\"", x + srcToken.length());
final String srcText = src.substring(x + srcToken.length(), y);
for (FileRowData fileRowData : fileRowDataList) {
final String srcImage = fileRowData.getHref();
final String cidImage = ((AttachmentValueHolder) fileRowData).getCID();
final String typeImage = ((AttachmentValueHolder) fileRowData).getType();
final String persistentName = ((AttachmentValueHolder) fileRowData).getPersistentName();

// Add base 64 image inline (src="data:image/gif;base64,<name>")
if (srcText.endsWith(srcImage)) {
final String newSrc = src.replace(srcText, "data:" + typeImage + ";base64," + getBase64(persistentName));
html = html.replace(src, newSrc);
}
}
}
}
}

这是 base64 编码图像的 getBase64() 方法:
private String getBase64(final String fileName) {
String returnText = "";
try {
BASE64Encoder base64Enc = new BASE64Encoder();
ByteArrayOutputStream output = new ByteArrayOutputStream();
base64Enc.encode(this.getEmbeddedImageStream(fileName), output);
returnText = output.toString();
} catch (NotesException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return returnText;
}

部分代码来自 emailBean by Tony McGuckin .

关于ckeditor - 将富文本和图像从一个文档复制到另一个文档中的 MIME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15121385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com