You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tinymce调用getContent无法保留全部CSS样式,该如何修改配置?

问题根因

你遇到的显示差异本质源于两个核心问题:

  • getContent()默认仅返回编辑器内部的内容片段,不会包含编辑器外层容器的样式、编辑器加载的内容样式表
  • 你配置的全局字体、行高默认写在#GSNotes容器上,不属于内容本身的样式,导出后没有对应规则生效,inline/iframe模式返回结果一致、修改skin不生效都是正常现象,skin仅控制编辑器UI样式,和内容渲染无关。

具体解决方案


1. 补充编辑器全局内容样式

在你的tinymce.init配置中新增content_style项,把原本写在#GSNotes容器上的全局样式配置为编辑器内容的默认样式,保证手动未修改的默认内容也能统一样式:

tinymce.init({
  // 保留你原来的所有配置,新增以下项
  content_style: `
    body {
      font-family: Avenir Next; 
      font-size: 0.9rem; 
      line-height: 1.2rem; 
      color: #1D273D;
      margin: 0;
      padding: 1rem;
    }
  `
})

2. 导出时生成完整HTML结构

不要直接用getContent()的结果作为完整文件内容,需要自行拼接完整的HTML头部,引入内容样式、配置全局规则,保证导出文件可独立运行,修改你的saveTEXT函数如下:

const saveTEXT = function() {
  const textPlain = tinymce.get('GSNotes').getContent({ format: 'text' });
  const contentHTML = tinyMCE.get('GSNotes').getContent();
  // 拼接完整可独立运行的HTML结构
  const fullHTML = `<!DOCTYPE html>
<html lang='en'>
<head>
  <meta charset='utf-8'>
  <meta name='viewport' content='width=device-width, initial-scale=1'>
  <!-- 引入编辑器使用的内容样式,也可以直接把content.min.css的内容内嵌到style标签避免外部依赖 -->
  <link rel='stylesheet' href='https://website/TINY/GSNotes-skin/skins/content/GSNotes-skin/content.min.css'>
  <style>
    /* 根字体大小和你原页面保持一致,保证rem单位渲染正确 */
    html { font-size: 16px; }
    body {
      font-family: Avenir Next; 
      font-size: 0.9rem; 
      line-height: 1.2rem; 
      color: #1D273D;
      margin: 0;
      padding: 1rem;
      min-height: 550px;
    }
  </style>
</head>
<body>
${contentHTML}
</body>
</html>`;
  const jsonARR = { textPlain, textHTML: fullHTML};
  FileMaker.PerformScriptWithOption ( 'RTE-exit' , JSON.stringify(jsonARR) , '5' );
}

3. 特殊字体适配(可选)

如果你使用的Avenir Next属于非系统默认字体,需要把字体文件转成base64内嵌到导出HTML的style标签中,避免用户设备未安装对应字体导致 fallback 到系统默认字体。

内容的提问来源于stack exchange,提问作者GSymon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 19:06:05