CKEditor5 爬坑.

news2024/11/25 6:59:04

CKEditor5 爬坑

  • exportpdf.d.ts

ChatGPT 推荐我使用CKEditor,确实比UEditor高不少档次。
但是如果你想使用控件中的 PDF导出,Word导入导出。
你可能需要三思。
因为其PDF导出是通过美国云服务的。

exportpdf.d.ts

/**
 * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */
/**
 * @module export-pdf/exportpdf
 * @publicApi
 */
import { Plugin, type Editor } from 'ckeditor5/src/core';
import { Notification } from 'ckeditor5/src/ui';
import type { InitializedToken, TokenUrl } from '@ckeditor/ckeditor5-cloud-services';
import '../theme/exportpdf.css';
/**
 * The export to PDF feature.
 *
 * It allows you to generate a PDF file directly from the editor content.
 *
 * For a detailed overview, check the {@glink features/converters/export-pdf export to PDF} feature documentation.
 */
export default class ExportPdf extends Plugin {
    /**
     * @inheritDoc
     */
    static get pluginName(): 'ExportPdf';
    /**
     * @inheritDoc
     */
    static get requires(): (string | typeof Notification)[];
    /**
     * @inheritDoc
     */
    init(): void;
}
/**
 * The configuration of the export to PDF feature. It is used by the PDF export features from the `@ckeditor/ckeditor5-export-pdf` package.
 *
 * ```ts
 * ClassicEditor
 * 	.create( editorElement, {
 * 		exportPdf: ... // Export to PDF feature options.
 * 	} )
 * 	.then( ... )
 * 	.catch( ... );
 * ```
 *
 * See {@link module:core/editor/editorconfig~EditorConfig all editor options}.
 */
export interface ExportPdfConfig {
    /**
     * Paths to the `.css` files containing additional styling for the editor's content (**the order of provided items matters**).
     *
     * ```ts
     * const exportPdfConfig = {
     * 	stylesheets: [ './path/to/custom-style.css' ]
     * }
     * ```
     *
     * **NOTE:** If `stylesheets` are not provided, the plugin will sent only
     * {@glink installation/advanced/content-styles#the-full-list-of-content-styles the default editor content styles} to the converter.
     *
     * **Default editor's content styles**:
     * {@glink installation/advanced/content-styles#the-full-list-of-content-styles The default editor content styles}
     * are applied to the generated PDF thanks to the 'EDITOR_STYLES' token, which is provided to the `stylesheets` by default.
     * If you don't want them to be applied, you have to omit the token:
     *
     * ```ts
     * const exportPdfConfig = {
     * 	stylesheets: [ './path/to/custom-editor-styles.css' ]
     * }
     * ```
     *
     * **Web fonts:** If you want to {@glink features/converters/export-pdf#providing-web-font-styles use web fonts} in your PDF document,
     * you should provide a path to the file containing the web font declaration before the `'EDITOR_STYLES'` token:
     *
     * ```ts
     * const exportPdfConfig = {
     * 	stylesheets: [
     * 		'./path/to/fonts.css',
     * 		'EDITOR_STYLES'
     * 	]
     * }
     * ```
     *
     * **Web fonts and custom styling:** For more advanced styling, your configuration should look like this:
     *
     * ```ts
     * const exportPdfConfig = {
     * 	stylesheets: [
     * 		'./path/to/fonts.css',
     * 		'EDITOR_STYLES',
     * 		'./path/to/custom-styles.css'
     * 	]
     * }
     * ```
     *
     * @default `[ 'EDITOR_STYLES' ]`
     */
    stylesheets?: Array<string>;
    /**
     * The name of the generated PDF file.
     *
     * ```ts
     * // Static file name.
     * const exportPdfConfig = {
     * 	fileName: 'my-document.pdf'
     * }
     *
     * // Dynamic file name.
     * const exportPdfConfig = {
     * 	fileName: () => {
     * 		const articleTitle = document.querySelector( '#title' );
     *
     * 		return `${ articleTitle.value }.pdf`;
     * 	}
     * }
     * ```
     *
     * **NOTE:** The file name must contain the `.pdf` extension.
     * Otherwise your operating system or device may have trouble identifying the file type.
     *
     * @default 'document.pdf'
     */
    fileName?: string | (() => string);
    /**
     * A URL to the HTML to PDF converter.
     *
     * ```ts
     * const exportPdfConfig = {
     * 	converterUrl: 'https://myconverter.com/v1/'
     * }
     * ```
     *
     * **NOTE:** The plugin uses the default HTML to PDF converter delivered by CKEditor Cloud Services.
     * You can provide a URL to an on-premises converter instead.
     *
     * @default 'https://pdf-converter.cke-cs.com/v1/convert'
     */
    converterUrl?: string;
    /**
     * The HTML to PDF converter options.
     *
     * **NOTE:** Configuring the plugin is not mandatory but it is highly recommended,
     * especially if you want to get the most accurate results when generating the PDF file.
     * To learn more, please check the [HTML to PDF converter configuration](https://pdf-converter.cke-cs.com/docs).
     *
     * ```ts
     * const exportPdfConfig = {
     * 	converterOptions: {
     * 		...
     * 	}
     * }
     * ```
     *
     * @default `{
     * 	format: 'A4',
     * 	margin_top: '0',
     * 	margin_bottom: '0',
     * 	margin_right: '0',
     * 	margin_left: '0',
     * 	page_orientation: 'portrait',
     * 	header_html: undefined,
     * 	footer_html: undefined,
     * 	header_and_footer_css: undefined,
     * 	wait_for_network: true,
     * 	wait_time: 0
     * }`
     */
    converterOptions?: ExportPdfConverterOptions;
    /**
     * A function to gather the HTML to be converted to PDF.
     *
     * **NOTE:** This option may be useful when the editor does not have `getData()` method,
     * or if the HTML to be converted should be different than the edited one.
     *
     * ```ts
     * const exportPdfConfig = {
     * 	dataCallback: ( editor: Editor ) => {
     * 		return `
     * 			<header id="header">${ editor.data.get( { rootName: 'header' } ) }</header>
     * 			<div id="content">${ editor.data.get( { rootName: 'content' } ) }</div>
     * 		`;
     * 	}
     * }
     * ```
     *
     * @default `( editor: Editor ) => editor.getData()`
     */
    dataCallback?: (editor: Editor) => string;
    /**
     * A token URL or a token request function. This field is optional and should be used only when a different `tokenUrl` is required for
     * the export to PDF feature.
     *
     * **Note:** The token can be disabled with the `false` value provided.
     *
     * See: {@link module:cloud-services/cloudservicesconfig~CloudServicesConfig#tokenUrl}
     */
    tokenUrl?: TokenUrl | false;
    /**
     * The authentication token.
     *
     * See: {@link module:cloud-services/cloudservices~CloudServices#token}
     */
    token?: InitializedToken;
    /**
     * The application unique identifier.
     */
    appID?: string;
}
export type ExportPdfConverterOptions = {
    format?: 'Letter' | 'Legal' | 'Tabloid' | 'Ledger' | 'A0' | 'A1' | 'A2' | 'A3' | 'A4' | 'A5' | 'A6';
    margin_top?: string;
    margin_bottom?: string;
    margin_right?: string;
    margin_left?: string;
    header_html?: string;
    footer_html?: string;
    header_and_footer_css?: string;
    page_orientation?: 'portrait' | 'landscape';
    wait_for_network?: boolean;
    wait_time?: number;
};

在这里插入图片描述
在这里插入图片描述

抓到接口是 https://pdf-converter.cke-cs.com/docs
很抱歉,如果你使用政企内网单位,文件就会统一上传给美国服务器。
请另寻富文本转PDF的控件。

除了这一个缺点其他都是优点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/876519.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ROSpider机器人评测报告

ROSpider机器人评测报告 最近入手了一款ROSpider六足仿生机器人&#xff0c;ROSpider是一款基于ROS 操作系统开发的智能视觉六足机器人。 外观 外观上ROSpider六足机器人如同名字一样有六只机械腿&#xff0c;整体来看像一只六腿的蜘蛛。腿上的关节处用了明亮的橙黄色很是显…

小红书运营 公司账号怎么做?

大家好&#xff0c;我是网媒智星&#xff0c;今天跟大家讨论一下一个人如何运营公司小红书账号&#xff1f; 之前有位同事告诉我&#xff1a;“老板对小红书不太了解&#xff0c;所以我一个人负责整个新媒体部门的运营工作&#xff0c;包括小红书、公众号、微博和抖音。就像一个…

黑客必备的操作系统——kali linux安装

大家经常会在电视里面看到各种炫酷的黑客操作&#xff0c;那么黑客一般用什么操作系统呢&#xff1f;今天小训带大家来安装黑客必备的kali linux-2022操作系统&#xff0c;有兴趣的一起来学习下吧&#xff01; 1、安装前准备 1.1 VMware下载 VMware官网下载&#xff1a; ht…

租车服务小程序DIY,让你成为租车平台的主人

汽车租赁行业正迎来快速发展的时代&#xff0c;随着人们对出行方式需求的增加&#xff0c;汽车租赁成为了一种便捷、经济的选择。而随着移动互联网的普及&#xff0c;微信小程序成为了一种理想的平台&#xff0c;为汽车租赁企业打造一个高效的租车平台。 首先&#xff0c;我们需…

P1955 [NOI2015] 程序自动分析

题目 思路 第一眼&#xff1a;非常简单的并查集 看看标签 6 为什么离散化会WARE呢 首先&#xff0c;并查集是根据f数组来联系两点的&#xff0c;类似于f[x]y&#xff0c;但是在这个题中我们不能确定x是否为非负整数&#xff0c;而且x过大也会炸内存 那就加一个离散化吧 输入…

Linux服务使用宝塔面板搭建网站,通过内网穿透实现公网访问

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 前言 宝塔面板作为简单好用的服务器运维管理面板&#xff0c;它支持Linux/Windows系统&#xff0c;我们可用它来一键配置LAMP/LNMP环境、网站、数据库、FTP等&…

案例16 基于Spring Boot实现学生新增案例

基于Spring Boot实现学生新增。 1. 创建Spring Boot项目 创建Spring Boot项目&#xff0c;项目名称为case16-springboot-student01。 ​ 2. 设置项目信息 ​ 3. 选择依赖 选择Lombok ​ 选择Spring Web ​ 4. 设置项目名称 ​ 5. Maven依赖 <?xml version"1.0&qu…

SyntaxError: Cannot use import statement outside a module

node环境运行报错&#xff1a; 解决步骤&#xff1a; 1. npm init -y 2. 在 package.json 文件中加入一条&#xff1a;"type": "module", 3. 保存后再执行即可 附&#xff1a;最好是不要在node用import&#xff0c;否则需要上次配置 建议1&#xff1a;用re…

【网络】传输层——TCP(滑动窗口流量控制拥塞控制延迟应答捎带应答)

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《网络》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 上篇文章对TCP可靠性机制讲解了一部分&#xff0c;这篇文章接着继续讲解。 &#x1f3a8;滑动窗口 在…

手动实现线性回归例子

转自&#xff1a;https://www.cnblogs.com/BlairGrowing/p/15061912.html 刚开始接触深度学习和机器学习&#xff0c;由于是非全日制&#xff0c;也没有方向感&#xff0c;缺乏学习氛围、圈子&#xff0c;全靠自己业余时间瞎琢磨&#xff0c;犹如黑夜中摸索着石头过河。 本文…

探讨uniapp的数据缓存问题

异步就是不管保没保存成功&#xff0c;程序都会继续往下执行。同步是等保存成功了&#xff0c;才会执行下面的代码。使用异步&#xff0c;性能会更好&#xff1b;而使用同步&#xff0c;数据会更安全。 1 uni.setStorage(OBJECT) 将数据存储在本地缓存中指定的 key 中&#x…

Oracle切割字符串的方法,SQL语句完成。

Oracle用正则的方式循环切割字符串 需求&#xff1a;有一个这样子的 Str “‘CNJ-520-180500000001|CNJ-520-181200000001|CNJ-520-190300000001|CNJ-520-190100000001|CNJ-520-181200000002’” &#xff0c;然后我需要拿到每一个单号&#xff0c;每一个单号都要走一遍固定的…

基于K8S环境部署Dolphinscheduler及简单应用

一、Dolphinscheduler简介 Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。 Apache DolphinScheduler 旨在解决复杂的大数据任务依赖关系,并为应用…

SOPC之NIOS Ⅱ遇到的问题

记录NIOS Ⅱ中遇到的报错 一、NIOS II中Eclipse头文件未找到 问题&#xff1a;Unresolved inclusion: "system.h"等 原因&#xff1a;编译器无法找到头文件所在路径 解决方法&#xff1a; 在文件夹中找到要添加的头文件&#xff0c;并记录下其路径&#xff0c;如…

8.14 作业

1. .text .globl _start_start:mov r0,#0x9mov r1,#0xfbl loop loop:cmp r0,r1beq stopsubhi r0,r1subls r1,r0mov pc,lr stop:b stop 2.实现1-100的和 .text .globl _start_start:mov r0,#0x1bl loop loop:cmp r0,#0x64bhi stopaddls r1,r0addls r0,#0x1mov pc,lr stop:b sto…

Android app专项测试之耗电量测试

前言 耗电量指标 待机时间成关注目标 提升用户体验 通过不同的测试场景&#xff0c;找出app高耗电的场景并解决 01、需要的环境准备 1、python2.7(必须是2.7&#xff0c;3.X版本是不支持的) 2、golang语言的开发环境 3、Android SDK 此三个的环境搭建这里就不详细说了&am…

C++之map的emplace与pair插入键值对用法(一百七十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

【openwrt学习笔记】dnsmasq源码阅读

目录 一、DHCP(Dynamic Host Configuration Protocol)1.1 前置知识1.2 参考链接1.3 IP地址分配代码分析rfc2131.cdhcp-common.cdhcp.c 1.4 几个小问题1.4.1 连续IP模式&#xff08;sequential_ip&#xff09;1.4.2 重新连接使用IP地址1.4.3 续约租期1.4.4 不同的MAC地址分配到相…

Power Automate:筛选查找列表中的项并删除

目的&#xff1a;筛选出列表中所有符合条件的项并删除&#xff0c;如果一项都没有&#xff0c;就发邮件通知自己 1、首先获取多个项&#xff0c;添加筛选条件&#xff0c;比如设备列为1的项&#xff0c;无需加引号。也可以添加筛选条件 2、接下来不能直接循环刚得到的多个项并…

NuGet包离线安装方法

在某项情况下&#xff0c;我们的计算机是无法直接连接外网的&#xff0c;这个时候就只能用离线安装的方法了。 一、直接区NUGET.org网页下载&#xff1a; 二、先下载nuget.exe工具&#xff0c;然后用这个工具下载 把下载的nuget.exe放在任意目录下&#xff0c;然后在此目录用…