guide导出为 PDF 本地授权

要启用授权,请在安装期间设置SECRET_KEY环境变量。

如果设置了SECRET_KEY变量,则所有请求都必须具有一个带有使用此密钥签名的 JWT(JSON Web 令牌)的标头。令牌应作为发送到导出为 PDF REST API的每个请求的Authorization标头的值传递。

如果您在安装期间未设置任何SECRET_KEY,则导出为 PDF 本地将不需要任何带有令牌的标头来发送请求到导出为 PDF REST API。但是,我们不建议在公共网络中运行导出为 PDF 本地时跳过授权。

# 生成令牌

我们强烈建议使用jwt.io上列出的库来生成令牌。当令牌

  • 使用与传递到导出为 PDF 本地实例的相同的SECRET_KEY签名时,
  • 它是在过去 24 小时内创建的,
  • 它没有在将来发出(例如,iat时间戳不能比当前时间新),
  • 它尚未过期。

导出为 PDF 本地的令牌不需要任何额外的声明,例如环境 ID(这是协作服务器本地的特定声明),因此您可以使用空有效载荷创建令牌。

如果您的用例涉及从您的后端服务器发送请求,那么您可以像我们的请求示例那样在本地生成 JWT 令牌。

对于编辑器插件或其他前端用法,您应该创建一个令牌端点,该端点为授权用户返回有效的 JWT 令牌。您可以在此处找到端点实现示例

# 使用编辑器插件

CKEditor 4 和 CKEditor 5 的插件将自动从给定的tokenUrl变量中请求令牌,并在进行导出请求时设置Authorization标头。有关将导出为 PDF 功能添加到您的 WYSIWYG 编辑器的详细信息,请参阅CKEditor 4 配置指南CKEditor 5 配置指南

# 带有授权标头的请求示例

以下示例展示了一个生成有效 JWT 令牌并将其设置为Authorization标头的请求

const fs = require( 'fs' );
const jwt = require( 'jsonwebtoken' );
const axios = require( 'axios' );

const SECRET_KEY = 'secret';

const token = jwt.sign( {}, SECRET_KEY, { algorithm: 'HS256' } );

const data = {
   html: "<p>I am a teapot</p>",
   css: "p { color: red; }",
};

const config = {
   headers: {
      'Authorization': token
   },
   responseType: 'arraybuffer',
};

axios.post( 'https://127.0.0.1:8080/v1/convert', data, config )
   .then( response => {
      fs.writeFileSync('./file.pdf', response.data, 'binary');
   } ).catch( error => {
      console.log( error );
   } );

SECRET_KEY是传递到导出为 PDF 本地实例的密钥

请参考导出为 PDF REST API 文档以开始使用该服务。

注意:如果您使用的是 Postman 或 Insomnia 等 API 客户端,请在“标头”选项卡中将 JWT 令牌设置为Authorization标头。不要使用内置的令牌授权,因为这将生成带有附加到令牌的Bearer前缀的无效标头。