冰蓝科技
|
028-81705109
|
|
微信扫一扫
|

Spire.Cloud 纯前端文档控件

Spire.Presentation for Python 10.12.0 现已正式发布。本次更新针对 PPTX 转 PDF 的准确性和稳定性进行了增强,修复了文本丢失、内容重叠以及表格布局不正确等问题。详情如下。

问题修复:


获取 Spire.Presentation for Python 10.12.0 请点击:

https://www.e-iceblue.cn/Downloads/Spire-Presentation-Python.html

随着 Web 前端技术的发展,越来越多的企业与开发者开始将文档处理和文件管理等能力迁移至纯前端体系中,以提升应用的响应速度、安全性和易用性。

作为当前流行的前端框架之一,React 以其声明式、组件化的优势,广泛应用于构建从后台管理系统、在线文档平台到教育管理系统等各类复杂Web应用。 本文将指导你便捷地在 React 项目中集成使用Spire.OfficeJS,让复杂的文档处理变得简单、可控。

目录:

关于 Spire.OfficeJS

Spire.OfficeJS 是 E-ICEBLUE 推出的纯前端文档编辑组件套件,包含 Word、Excel、PowerPoint、PDF 等多种格式的查看、编辑、创建与转换能力。开发者无需安装 Microsoft Office,也无需依赖后端服务,即可在浏览器中完成从打开到编辑、再到导出的完整文档处理流程。其轻量、高效、易集成的特性,使其非常适合用于构建在线文档平台、知识库、教育平台及各类管理后台。

套件包括以下四款前端编辑器组件:

核心功能:

  • 多格式支持:支持 Word、Excel、PPT 预览,编辑与导出,以及 PDF 格式文档的预览
  • 在线编辑能力:可在浏览器中直接操作 Office 文档编辑文档内容,例如文本、表格、图片、样式等
  • 高性能纯前端运行:基于 WebAssembly,加载轻量、运行高效,无需后端参与
  • 灵活集成:可轻松接入 React、Vue、Angular 等框架,原生 JavaScript 中使用也非常便捷

创建 React 项目并集成 Spire.OfficeJS

步骤一:安装 Node.js

下载安装 Node.JS (Node.JS 官方网站:https://nodejs.org/en/download/),安装后可通过打开 cmd 后输入下述命令验证版本:

node -v
npm -v

使用代码确认Node.js 版本

步骤二:使用 Vite 创建 React 项目

指定项目文件夹位置,cmd 进入执行命令:npm create vite@latest my-officejs-app -- --template react 创建初始化 React 项目。

使用vite创建空白react项目

步骤三:npm 安装依赖

Vscode 打开 my-officejs-app 项目,命令执行:npm install react-router-dom 安装路由管理库,以便页面之间更好地切换显示。

步骤四:集成 Spire.OfficeJS

下载 Spire.OfficeJS 产品包, 在 React 项目 public 文件下新建 spire.cloud 文件夹,并将产品解压包中的web文件夹复制到 spire.cloud 下,路径配置跟 Editor.jsx 中路径保持一致

复制到 public 目录

在项目中构建文件上传与编辑器页面

  1. App.jsx 中配置以下内容,处理路由及全局文件状态管理
import { createContext, useContext, useState } from 'react';
import { createBrowserRouter, RouterProvider } from 'react-router-dom';
import Home from './Home';
import Editor from './Editor';

// 文件状态 Context
const FileContext = createContext();

export const useFileStore = () => useContext(FileContext);

function FileProvider({ children }) {
  const [file, setFile] = useState(null);
  const [fileUint8Data, setFileUint8Data] = useState(null);

  return (
    <FileContext.Provider value={{
      file,
      fileUint8Data,
      setFileData: setFile,
      setFileUint8Data
    }}>
      {children}
    </FileContext.Provider>
  );
}

const router = createBrowserRouter([
  { path: '/', element: <Home /> },
  { path: '/editor', element: <Editor /> },
]);

function App() {
  return (
    <FileProvider>
      <RouterProvider router={router} />
    </FileProvider>
  );
}

export default App;
  1. Home.jsx 中配置以下内容用于文件上传功能,包括拖拽上传、选择本地文件、用 FileReader 转成 Uint8Array、将文件保存到 Context,以及跳转到编辑器页面。

说明:

  • FileReader:用于读取本地文件;
  • Uint8Array:OfficeJS 的 WebAssembly 接收二进制格式
  • useNavigate:React Router 的页面跳转函数
  • drag&drop: 浏览器拖拽上传
import { useRef, useEffect } from "react"
import { useFileStore } from './App';
import { useNavigate } from 'react-router-dom';

function Home() {
    const { setFileData, setFileUint8Data } = useFileStore();
    const navigate = useNavigate();

    let dropArea = null;
    let fileInput = useRef();
    let file = null;
    let fileUint8Data = null;

    useEffect(() => {
        dropArea = document;

        // 阻止默认拖放行为
        ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
            dropArea.addEventListener(eventName, preventDefaults, false);
        });

        // 处理文件拖放
        dropArea.addEventListener('drop', handleDrop, false);
    }, [])

    const preventDefaults = (e) => {
        e.preventDefault();
        e.stopPropagation();
    }

    const handleBtnClick = (e) => {
        e.preventDefault();
        fileInput.current.click();
    }

    const handleDrop = async (e) => {
        if (e.target && e.target.files)
            file = e.target.files[0]
        else if (e.dataTransfer && e.dataTransfer.files)
            file = e.dataTransfer.files[0];

        if (!file) return;

        fileUint8Data = await handleFile(file);
        setFileData(file);
        setFileUint8Data(fileUint8Data);
        openDocument();
    }

    const handleFile = (file) => {
        return new Promise((resolve, reject) => {
            const reader = new FileReader();
            reader.onload = () => {
                const arrayBuffer = reader.result;
                const uint8Array = new Uint8Array(arrayBuffer);
                resolve(uint8Array);
            };
            reader.onerror = (error) => reject(error);
            reader.readAsArrayBuffer(file);
        });
    }

    const openDocument = () => {
        navigate('/editor')
    }

    return (
        <div>
            <div>
                <h2>文件上传</h2>
                <div>
                    <p>拖放文件到浏览器</p>
                     <p style={{ marginLeft: '20px' }}>或</p>
                    <button ref={fileInput} onClick={handleBtnClick}>选择文件</button>
                    <input
                        type="file"
                        id="fileInput"
                        ref={fileInput}
                        onChange={handleDrop}
                        style={{ display: 'none' }}
                    />
                </div>
            </div>
        </div>
    )
}

export default Home
  1. 新增含以下内容的 Editor.jsx 集成 OfficeJS 编辑器
import { useRef, useEffect } from "react"
import { useFileStore } from './App';
import { useNavigate } from 'react-router-dom';

function Editor() {
    const { file, fileUint8Data } = useFileStore();
    const navigate = useNavigate();

    const config = useRef({});
    let Editor = useRef(null);
    let Api = useRef(null);
    let originUrl = window.location.origin;

    useEffect(() => {
        if (!file) {
            navigate('/')
            return;
        }
        // 动态加载SpireCloudEditor.js
        loadScript();
    }, [])

    const loadScript = () => {
        var script = document.createElement('script');
        // 根据你的产品包路径调整
        script.setAttribute('src', '/spire.cloud/web/editors/spireapi/SpireCloudEditor.js');
        script.onload = () => initEditor()
        document.head.appendChild(script);
    }

    const initEditor = () => {
        let iframeId = 'iframeEditor';
        initConfig();
        Editor = new SpireCloudEditor.OpenApi(iframeId, config.value);
        window.Api = Api = Editor.GetOpenApi();
        OnWindowReSize();
    }

    const initConfig = () => {
        config.value = {
            "fileAttrs": {
                "fileInfo": {
                    "name": file.name,
                    "ext": getFileExtension(),
                    "primary": String(new Date().getTime()),
                    "creator": "User",
                    "createTime": new Date().toLocaleString()
                },
                "sourceUrl": originUrl + "/files/" + file.name,
                "createUrl": originUrl + "/open",
                "mergeFolderUrl": "",
                "fileChoiceUrl": "",
                "templates": {}
            },
            "user": {
                "id": "uid-1",
                "name": "User",
                "canSave": true,
            },
            "editorAttrs": {
                "editorMode": "edit",
                "editorWidth": "100%",
                "editorHeight": "100%",
                "editorType": "document",  // document/spreadsheet/presentation
                "platform": "desktop",
                "viewLanguage": "zh",  // en/zh
                "isReadOnly": false,
                "canChat": true,
                "canComment": true,
                "canReview": true,
                "canDownload": true,
                "canEdit": true,
                "canForcesave": true,
                "embedded": {
                    "saveUrl": "",
                    "embedUrl": "",
                    "shareUrl": "",
                    "toolbarDocked": "top"
                },
                // 启用WebAssembly以提升性能
                "useWebAssemblyDoc": true,
                "useWebAssemblyExcel": true,
                "useWebAssemblyPpt": true,
                "spireDocJsLicense": "",
                "spireXlsJsLicense": "",
                "spirePresentationJsLicense": "",
                "spirePdfJsLicense": "",
                // Serverless模式:直接使用文件数据,无需服务器
                "serverless": {
                    "useServerless": true,
                    "baseUrl": originUrl,
                    "fileData": fileUint8Data,  // 文件的Uint8Array数据
                },
                "events": {
                    "onSave": onFileSave
                },
                "plugins": {
                    "pluginsData": []
                }
            }
        };
    }

    const OnWindowReSize = () => {
        let wrapEl = document.getElementById("editor-container");
        if (wrapEl) {
            wrapEl.style.height = screen.availHeight + "px";
            window.scrollTo(0, -1);
            wrapEl.style.height = window.innerHeight + "px";
        }
    }

    const getFileExtension = () => {
        const filename = file.name.split(/[\\/]/).pop();
        return filename.substring(filename.lastIndexOf('.') + 1).toLowerCase() || '';
    }

    const onFileSave = (data) => {
        console.log('保存数据:', data)
        // 在这里实现你的保存逻辑
        // 例如:发送到服务器、下载文件等
    }

    return (
        <div id="editor-container">
            <div id="iframeEditor"></div>
        </div>
    )
}

export default Editor
  1. main.jsx 配置以下内容
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import App from './App.jsx'

createRoot(document.getElementById('root')).render(
  // 注意:StrictMode会导致Spire编辑器渲染两次,建议禁用
  <App />
)
  1. vite.config.js 中自定义配置Vite 端口
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

export default defineConfig({
  server: {
    host: '0.0.0.0',
    port: 8050
  },
  plugins: [react()],
})

项目运行

命令执行:npm run dev 运行配置后的项目,浏览器访问http://localhost:8050/

运行首页,上传文件

通过”选择文件“上传本地文档打开编辑。

文件上传后跳转前端编辑界面

通过“文件“—>”下载为” 可以下载或转换为其它格式。

编辑完后可将文档保存为其他格式

完整示例下载

点击下载

常见问题及解答

1. 创建项目时报错 npm或 node 版本不兼容:

可能是 Node.js 版本 问题,建议安装较新版本。

2. 依赖安装失败:

  • 清理缓存;
  • 删除 node_modules 和 package-lock.json,并重新安装;
  • 确保项目目录正确,不要在 Vite 项目外执行安装。

3. Spire.OfficeJS 文件无法加载:

  • 确认你已将 web 文件夹复制到对应目录下;
  • 确保项目运行时服务器可访问 public 下资源。

申请临时授权

如果您需要去除生成文档中的评估提示或解除功能限制,请联系我们获取有效期 30 天的临时许可证。

Spire.OfficeJS 是一个功能强大的前端 JavaScript 库,可在 Web 浏览器端直接编辑、预览和处理 Office 文档,无需插件,也无需安装 Microsoft Office / WPS 本地工具。

Spire.OfficeJS 产品包含四个模块:

  • Spire.WordJS:Word 文档格式的预览,编辑操作,全面兼容 Microsoft Word 和 WPS 格式(如 .doc、.docx 、.wps 、.wpt 等)
  • Spire.ExcelJS:Excel 文档格式的预览,编辑操作(如 .xls、.xlsx 、.et、.ett 等)
  • Spire.PresentationJS:PowerPoint 文档格式的预览,编辑操作(如 .ppt、.pptx 等)
  • Spire.PDFJS:PDF 文档格式的预览

文章目录

准备工作

Spire.OfficeJS 基于 web 服务支撑,在原生 JavaScript 中使用,请先启动 web 服务(通过产品包脚本启动服务,默认端口为8001)。

步骤1、获取与解压安装包

下载 windows 系统 Spire.OfficeJS 产品包

步骤2、启动 web 服务

  • Windows 环境中,运行产品包解压文件夹下 run_servers.bat 文件,终端显示如下:(3000 端口为示例文档管理系统,默认可以使用 localhost:3000 或 127.0.01:3000 直接在浏览器中访问测试)。

在 Windows 中启动服务

  • Linux(X86_64) 环境中,命令 sh run_servers.sh start 运行产品包解压文件夹下 run_servers.sh 文件(停止服务命令:sh run_servers.sh stop;重启服务命令: sh run_servers.sh restart),终端显示如下:

在 Linux 中启动服务

步骤3、配置服务地址

服务默认使用 127.0.0.1,可配置 example\config\default.json 中 baseUrl 值修改为域名或实际 IP,以便通过域名或 IP 进行访问,修改后重启服务生效。

配置服务地址

此时,客户端可以通过配置的 IP 或域名进行访问示例系统,例如:192.168.3.127:3000。

示例系统

JavaScript 接入示例

浏览器预览接入HTML

浏览器预览接入HTML

HTML示例:

点击下载

参数说明

配置参数 示例值解释 设置值
fileAttrs 文件配置对象  
fileInfo 文件信息对象  
name 文件名 可为空
ext 文档名称 docx,xlsx,pptx
primary 文档唯一标示符 可为空
creator 文档创建者 可为空
createTime 文档创建时间 可为空
sourceUrl 文档 URL 不能为空,且需有访问权限
createUrl 创建新文档时模板文档的 Url 可为空
user 用户配置对象
id 用户 ID 可为空
name 用户名 可为空
editorAttrs 编辑器配置对象  
editorMode 编辑模式
可填 'edit'(编辑),'view'(展示)
可为空,默认为'edit'
editorWidth 可为空,默认值100%.
editorHeight 可为空,默认值100%.
editorType 文件编辑器类型 可不配置,程序根据文件类型获取,必须设置为 document 或 spreadsheet 或 presentation
platform 编辑器平台类型
'desktop'(电脑端展示),'mobile'(手机端展示),'embedded'(嵌入展示)
不能为空,必须设 desktop 或 mobile 或 embedded 中的一种
viewLanguage 平台界面展示语言 可为空,"en" 或 "zh" 若设置为空,则匹配浏览器默认语言
isReadOnly 文档是否只读 默认值为 false,文档可编辑。当设置为 true 时,文档只读
canChat 是否可聊天 默认值为 true,当设置为 false 时,不可聊天.
canComment 是否可批注 默认值为 true,当设置为 false 时,不可批注
canReview 是否可以修订 默认值为 true,当设置为 false 时,不可修订
canDownload 是否允许下载 默认值为 true,可下载。当设置为 false 时,不允许下载
canEdit 是否允许编辑 默认值为 true,可编辑。当设置为 false 时,不允许编辑
canForcesave 文档是否可强制保存 默认值为 true ,当设 false 时,不允许强制保存
embedded 嵌入显示配置对象 包含 saveUrl、embedUrl、shareUrl 和 toolbarDocked,用于控制嵌入文档的保存、分享和工具栏显示
saveUrl 嵌入文档的保存地址 默认值为空,可设置为 URL 用于保存编辑内容
embedUrl 嵌入文档访问地址 默认值为空,可设置为 URL 用于直接打开文档
shareUrl 嵌入文档分享地址 默认值为空,可设置为 URL 用于共享文档
toolbarDocked 工具栏停靠位置 默认值为 "top",可设置为 "top" 或 "bottom"
events 事件  
plugins 编辑器插件配置对象 默认值为空,用于扩展编辑器功能
pluginsData 插件数据数组 默认值为空,可根据需求增加插件
useWebAssemblyDoc spireDocJS功能是否启用 默认值为 true,可在浏览器端预览编辑 Word 文档。当设置为 false 时,禁用 spireDocJS 功能
spireDocJsLicense spireDocJs授权验证设置 默认值为空,用于设置授权key值,应用spireDocJs授权
useWebAssemblyExcel spireXlsJs功能是否启用 默认值为 true,可在浏览器端预览编辑 Excel 文档。当设置为 false 时,禁用 spireXlsJs功能
spireXlsJsLicense spireXlsJs授权验证设置 默认值为空,用于设置授权key值,应用spireXlsJs授权
useWebAssemblyPpt spirePresentationJs功能是否启用 默认值为 true,可在浏览器端预览编辑PowerPoint 文档。当设置为 false 时,禁用 spirePresentationJs功能
spirePresentationJsLicense spirePresentationJs授权验证设置 默认值为空,用于设置授权key值,应用spirePresentationJs授权
useWebAssemblyPdf spirePdfJs功能是否启用 默认值为 true,可在浏览器端预览PDF 文档。当设置为 false 时,禁用 spirePdfJs功能
spirePdfJsLicense spirePDFJs授权验证设置 默认值为空,用于设置授权key值,应用spirePDFJs授权
spireOfficeJsLicense spireOfficeJs授权验证设置 默认值为空,当设置spireOfficeJs授权key 值,其它单产品验证值可为空
serverless 无服务模式配置对象 包含 useServerless、baseUrl 和 fileData,前端可直接上传、编辑和下载文档
useSeverless 是否启用无服务模式 默认值为 true,启用无服务模式,前端可直接操作文档。当设置为 false 时,需要依赖服务端
baseUrl 无服务模式下的服务地址 默认值为空,需设置为部署好的 IP + 端口
fileData 文档数据 默认值为空,前端上传文件后存放在此字段,用于初始化编辑器

注: 应用授权可以移除默认水印和解除功能限制,如有需求,欢迎随时联系我们获取授权文件。

常见问题与解答

下方为一些常见问题及对应解决方案,供您参考。若仍无法解决,请联系技术支持。

问题 原因 解决方式
浏览器访问不到服务 服务未启动 / 端口未开放 确认服务运行状态并开放访问端口(3000 / 8001)
页面打开后内容为空白 浏览器缓存导致旧资源未更新 清理浏览器缓存或使用隐私/无痕模式重新访问
JS 文件加载失败 使用了错误的 IP 或端口 检查 SpireCloudEditor.js 引用地址是否正确
上传文件失败 baseUrl 未配置为实际部署地址 修改配置文件并重启服务
Linux 无法执行脚本 脚本权限不足 执行 chmod +x run_servers.sh 赋予执行权限

结语

至此,您已经了解如何在 JavaScript 环境中完成 Spire.OfficeJS 的安装、部署与前端集成。通过该库,你可以轻松打造无需插件、可直接在浏览器在线编辑 Office 文档的系统。

如需了解 Spire.OfficeJS 如何集成到其它框架中,如 Vue,请参考如何将 Spire.OfficeJS 集成到 Vue 框架

为回馈广大用户在过去一年中的支持,E-ICEBLUE 将于2025年12月1日至2026年1月10日举办 年度优惠活动。本次活动覆盖 E-ICEBLUE 的全线 Spire 系列产品,无论您是首次评估产品,还是计划升级或扩展开发工具箱,都可以在此期间以更优惠的价格获取包括 Spire.Doc、Spire.PDF、Spire.XLS、Spire.Presentation 在内的多款主力组件。

活动期间,您不仅可享受 全站统一折扣,还可通过 组合购 获得更高力度优惠,适用于各类规模的企业与开发团队。


年度优惠活动详情

全站产品 10% 折扣

双产品组合购 15% 折扣

购买 任意两款 Spire 产品组合(例如 Spire.Doc + Spire.PDF、Spire.XLS + Spire.PDF、Spire.Doc + Spire.XLS 等),即可享受:


如何使用折扣

所有年度优惠活动折扣(包括 全站 10% 折扣 和 双产品组合 15% 折扣)均需 联系销售团队 获取折扣码和下单方式。 销售人员将根据您的购买需求为您按应用相应折扣整理报价,确保您享受活动优惠。


注意事项


产品亮点与更新

敬请关注即将发布的新版本,体验 Spire 系列产品 全面的开发功能!

联系我们

我们很高兴地宣布 Spire.Office 10.11.0 正式发布。在这个版本中,Spire.Doc 优化了 OfficeMath 的处理能力;Spire.XLS 支持将 Excel 转换为 JSON;Spire.Presentation 增强了从 PPTX 到 PDF 的转换功能;Spire.PDF 支持在 NETStandard 环境下记录打印日志。同时,本次更新还修复了一系列已知问题。更多详情如下。

该版本涵盖了最新版的 Spire.Doc、Spire.PDF、Spire.XLS、Spire.Presentation、Spire.Barcode、Spire.Email、Spire.DocViewer、Spire.PDFViewer、Spire.OfficeViewer 和 Spire.DataExport。

版本信息如下:


获取Spire.Office 10.11.0,请点击:

https://www.e-iceblue.cn/Downloads/Spire-Office-NET.html

Spire.Doc

调整:

Spire.XLS

新功能:

  • 支持设置 EMF 格式背景图片。
  • CopyWorkbook workbook = new Workbook();
     workbook.LoadFromFile(inputFile);
     Worksheet sheet = workbook.Worksheets[0];
     Stream image = File.OpenRead(inputFile_Img);
     sheet.PageSetup.BackgoundImageStream = image;
     workbook.SaveToFile(outputFile, ExcelVersion.Version2013);

    问题修复:

    Spire.Presentation

    问题修复:

    Spire.PDF

    调整:

    新功能:

    问题修复:

    冰蓝科技今日(2025年11月28日)正式发布全新的前端文档编辑产品——Spire.WordJS。作为公司在前端文档处理领域的重要产品,Spire.WordJS 以 Web 架构为企业提供高性能、高兼容性的 Word 文档编辑能力,进一步完善了冰蓝科技在文档技术方向的产品矩阵。

    即开即用的前端 Word 文档编辑器

    Spire.WordJS 是一款无需安装的在线 Word 编辑器,基于现代前端技术构建,支持主流浏览器直接打开和编辑文档。产品采用纯 Web 架构,无需本地插件或 ActiveX,仅通过浏览器即可实现文档的查看、编辑、批注和协作,大幅降低 IT 运维成本,提升团队文档处理效率。

    产品亮点与核心能力

    可视化编辑体验,提升协作效率

    高保真格式兼容性

    丰富且专业的文档处理功能

    可扩展的 API 和集成能力

    Spire.WordJS 提供完善的 JavaScript SDK,可轻松集成到:

    并支持 JavaScript、Vue、React、Angular 等主流框架开发环境。

    企业级安全与高可用性

    Spire.WordJS 在设计阶段即融入安全与合规理念,具备以下能力:

    灵活部署与个性化方案

    为满足不同规模与行业的应用需求,Spire.WordJS 支持多种授权方式,并可按需定制功能模块。企业可结合自身业务流程设定权限策略、编辑能力、协作流程,实现真正的个性化文档处理方案。

    在线体验与产品试用

    冰蓝科技官网已同步开放 Spire.WordJS 的在线体验页面,用户可直接在浏览器中查看、编辑不同格式的文档,感受高保真渲染与编辑性能。

    如需部署本地测试,可联系冰蓝科技销售团队获取授权信息。

    关于冰蓝科技

    冰蓝科技(E-ICEBLUE)专注于文档处理技术的研发,产品涵盖 PDF、Word、Excel、PowerPoint、Email、OCR 等多类型开发库与在线服务,广泛应用于全球数十万开发者及企业。公司致力于提供安全稳定、易于集成的文档处理解决方案,持续助力客户在数字化办公时代提升效率与竞争力。 如需了解 Spire.WordJS 的更多详细信息,欢迎访问 e-iceblue.cn 或通过下面的方式联系我们。

    联系我们

    Spire.XLS 15.11.3 现已正式发布。该版本支持导出 equation 公式内容为 MathML 和 LaTeX,支持 XMATCH 函数、支持 Excel 转 JSON、支持设置 EMF 格式背景图片,同时新增类似 Office 365 的复选框效果功能。此外,一些有关加载 Excel 文档、Excel 转 PDF、公式行为等问题也已成功修复。详情如下。

    新功能:

    问题修复:


    下载Spire.XLS 15.11.3,请点击:

    https://www.e-iceblue.cn/Downloads/Spire-XLS-NET.html

    Spire.Office for Java 10.11.0 已正式发布。在该版本中,Spire.Doc for Java 支持在 Word 文档中创建组合图表;Spire.PDF for Java支持Excel与Markdown格式相互转换,以及设置文本框段落从右向左。除此之外,一些在转换和操作Word、Excel、PDF和PPT文档时出现的问题也已成功被修复。更多新功能及问题修复详情如下。


    获取Spire.Office for Java 10.11.0,请点击:

    https://www.e-iceblue.cn/Downloads/Spire-Office-JAVA.html

    Spire.Doc for Java

    新功能:

    问题修复:

    Spire.XLS for Java

    新功能:

    问题修复:

    Spire.PDF for Java

    问题修复:

    Spire.Presentation for Java

    问题修复:

    Spire.PDF for Python 11.11.0 现已发布。本次更新将自定义的日期处理实现替换为 Python 内置的 datetime 库,以确保在 Python 应用程序中获得更好的兼容性、一致性和可靠性。详细更新内容如下。

    调整:


    获取 Spire.PDF for Python 11.11.0 请点击:

    https://www.e-iceblue.cn/Downloads/Spire-PDF-Python.html

    Spire.XLS for Java 15.11.3 现已发布。该版本支持Excel与Markdown格式相互转换,并支持设置文本框段落从右向左。此外,一些转换 Excel 到 PDF、HTML和合并Excel文档时出现的问题也已成功被修复。详情查看下文。

    新功能:

    问题修复:


    获取Spire.XLS for Java 15.11.3,请点击:

    https://www.e-iceblue.cn/Downloads/Spire-XLS-JAVA.html