在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
通过将IronPDF(一种用于编程创建PDF文档的库)与LoopBack(一种用于构建API的Node.js框架)顺畅集成,提供了在LoopBack框架应用程序中进行动态PDF生成的完整解决方案。LoopBack框架具有模型创建、数据源验证、远程方法和访问控制等功能,使API/网页开发更加简单,而IronPDF通过更先进的PDF生成功能来增强它。
开发人员可以通过此集成从多个来源(包括外部 API 和数据库)提取数据,实时创建 PDF。 这使得可以创建定制的记录或业务领域对象以满足项目需求,例如发票、证书、报告等。 因为LoopBack是异步的,它补充了IronPDF的功能来处理PDF生成职责良好,不干扰事件循环,保证响应性和最佳性能。
要开始使用LoopBack和IronPDF,请使用LoopBack的CLI工具创建一个新项目,并通过npm将IronPDF安装为依赖项。 利用LoopBack的中间件和远程方法功能,根据客户端请求即时创建PDF,使集成变得简单。 综上所述,此集成使开发人员能够在 LoopBack 应用中高效地处理各种文档生成需求。
一个强大的Node.js框架称为LoopBack被创建用于简化创建API并将其连接到不同数据源的过程。 借助StrongLoop的产品LoopBack,开发人员可以轻松设计可扩展和适应性强的应用程序。基本上,LoopBack是基于express框架构建的,并基于模型驱动的开发方法,允许程序员创建象征其应用程序领域的数据模型。 关系型数据库如MySQL和PostgreSQL、NoSQL数据库如MongoDB,以及外部REST API和SOAP服务,所有这些都可以轻松与这些模型集成。
LoopBack 的独特之处在于它通过根据提供的模型自动生成 RESTful 端点,从而简化了 API 开发过程。 此外,LoopBack 提供了集成的验证、权限和认证支持,使程序员能够保护其 API 并保证数据完整性。 由于LoopBack的中间件架构基于Express.js,它是可扩展且灵活的,使开发人员能够使用现有的中间件或创建定制的中间件以满足独特的需求。
无论您是在创建简单的REST API,还是在构建复杂的微服务架构,LoopBack都具备加速开发的功能和工具,并能提供可靠且可扩展的解决方案。 由于其详尽的文档和活跃的社区,开发人员在创建尖端的在线和移动应用程序时经常选择它。
模型驱动架构:通过允许开发人员通过基于架构的方法定义数据模型,LoopBack 支持模型驱动开发。 多种数据源,包括数据库、REST API 和 SOAP 服务,可以使用模型来表示。
数据源不可知性:关系型数据库(MySQL,PostgreSQL), NoSQL 数据库(MongoDB), 外部 REST API 和 SOAP 服务只是 LoopBack 支持的众多数据源中的一部分。
自动化 REST API 生成:LoopBack 使用预定义的模型在 API Explorer 中自动创建 RESTful API 端点,从而减少样板代码,并加快开发速度。
内置的身份验证和授权支持:LoopBack 提供对这些功能的内置支持,使开发人员能够集成基于角色的访问控制。(RBAC)、用户身份验证及其他安全措施到他们的 API 中。
中间件和远程方法:开发人员可以使用 LoopBack 提供中间件和远程方法以更改 API 端点的行为。 虽然远程方法提供了可以通过HTTP远程调用的自定义功能,但中间件函数可以拦截并修改请求和响应。
命令行界面(CLI)用于LoopBack:LoopBack包含一个功能强大的CLI工具,使创建模型和控制器、构建新项目以及执行迁移等典型活动更加容易。
与LoopBack组件集成:LoopBack促进了组件的使用,这些组件是可重用的模块,提供电子邮件发送、文件存储和身份验证功能。 这使开发者在为他们的应用添加新功能时无需从头开始。
LoopBack Explorer:开发人员可以使用 LoopBack 的集成 API explorer 工具以互动方式检查和测试 API 端点。 这有助于故障排除并理解 API 的可能性。
您可以使用以下步骤在 Node.js 中设置和构建 LoopBack 应用程序:
安装 LoopBack 命令行界面(CLI),提供构建和管理LoopBack应用程序的资源,是第一步。使用npm将其全局安装:
npm install -g loopback-cli
npm install -g loopback-cli
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install -g loopback-cli
要使用 CLI 架构一个全新的核心 LoopBack 应用程序。 打开您希望构建应用程序的目录并在其中执行:
lb4 app
lb4 app
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'lb4 app
要提供有关您的应用程序的信息,比如其名称和目录以及您希望启用的功能,只需按照提示进行操作。
您将被提示提供以下信息:
项目名称:输入您的应用程序名称,例如,my-loopback-app。
项目描述:可选地描述您的应用程序。
项目根目录:接受默认设置或指定不同的目录。
应用程序类名:接受默认的Application。
启用 Prettier:选择是否启用 Prettier 进行代码格式化。
启用TSLINT:选择是否启用TSLint进行代码检查。
启用 Mocha:选择是否启用 Mocha 来运行测试。
CLI 将生成项目结构并安装必要的依赖项。
您的项目目录将具有以下结构:
my-loopback-app/
├── src/
│ ├── controllers/
│ ├── models/
│ ├── repositories/
│ ├── index.ts
│ ├── application.ts
│ └── ...
├── package.json
├── tsconfig.json
└── ...
my-loopback-app/
├── src/
│ ├── controllers/
│ ├── models/
│ ├── repositories/
│ ├── index.ts
│ ├── application.ts
│ └── ...
├── package.json
├── tsconfig.json
└── ...
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'my-loopback-app/ ├── src/ │ ├── controllers/ │ ├── models/ │ ├── repositories/ │ ├── index.ts │ ├── application.ts │ └──... ├── package.json ├── tsconfig.json └──...
要指定数据的结构,可以手动开发模型或使用LoopBack CLI。 模型可以由各种数据结构和来源支持,表示程序中的事物。 例如,运行:生成一个名为 Product 的新模型。
lb4 model
lb4 model
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'lb4 model
要指定模型的属性和连接,请遵循说明。
要处理创建 PDF 文档的请求,请创建一个新的控制器。 要创建一个新的控制器,请在 LoopBack CLI 中使用以下命令:
lb4 controller
lb4 controller
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'lb4 controller
要定义控制器的名称和相关模型,只需按照提示进行操作。假设我们想将控制器的属性名称与Report模型关联,并称其为ReportController。
确定您的模型将与哪些数据源进行通信。 LoopBack 支持许多数据库,例如 MySQL、PostgreSQL、MongoDB 等。 若要配置数据源,可以更新datasources.json文件或使用LoopBack CLI。
使用内置的API浏览器工具(可在http://localhost:3000/explorer上找到)来研究LoopBack的功能。 您可以在此处探索和测试您的API端点。
import {inject} from '@loopback/core';
import {
Request,
RestBindings,
get,
response,
ResponseObject,
} from '@loopback/rest';
/** * OpenAPI response for ping()
*/
const PING_RESPONSE: ResponseObject = {
description: 'Ping Response',
content: {
'application/json': {
schema: {
type: 'object',
title: 'PingResponse',
properties: {
greeting: {type: 'string'},
date: {type: 'string'},
url: {type: 'string'},
headers: {
type: 'object',
properties: {
'Content-Type': {type: 'string'},
},
additionalProperties: true,
},
},
},
},
},
};
/** * A simple controller to bounce back http requests
*/
export class PingController {
constructor(@inject(RestBindings.Http.REQUEST) private req: Request) {}
// Map to `GET /ping`
@get('/ping')
@response(200, PING_RESPONSE)
ping(): object {
// Reply with a greeting, the current time, the url, and request headers
return {
greeting: 'Hello from LoopBack',
date: new Date(),
url: this.req.url,
headers: Object.assign({}, this.req.headers),
};
}
}
import {inject} from '@loopback/core';
import {
Request,
RestBindings,
get,
response,
ResponseObject,
} from '@loopback/rest';
/** * OpenAPI response for ping()
*/
const PING_RESPONSE: ResponseObject = {
description: 'Ping Response',
content: {
'application/json': {
schema: {
type: 'object',
title: 'PingResponse',
properties: {
greeting: {type: 'string'},
date: {type: 'string'},
url: {type: 'string'},
headers: {
type: 'object',
properties: {
'Content-Type': {type: 'string'},
},
additionalProperties: true,
},
},
},
},
},
};
/** * A simple controller to bounce back http requests
*/
export class PingController {
constructor(@inject(RestBindings.Http.REQUEST) private req: Request) {}
// Map to `GET /ping`
@get('/ping')
@response(200, PING_RESPONSE)
ping(): object {
// Reply with a greeting, the current time, the url, and request headers
return {
greeting: 'Hello from LoopBack',
date: new Date(),
url: this.req.url,
headers: Object.assign({}, this.req.headers),
};
}
}
import
If True Then
inject
End If
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'from '@loopback/core'; import { Request, RestBindings, @get, response, ResponseObject} from '@loopback/rest'; const PING_RESPONSE: ResponseObject = { description: 'Ping Response', content: { 'application/json': { schema: { type: 'object', title: 'PingResponse', properties: { greeting: {type: 'string'}, @date: {type: 'string'}, url: {type: 'string'}, headers: { type: 'object', properties: { 'Content-Type': {type: 'string'}}, additionalProperties: True}}}}}}; export class PingController { constructor(@inject(RestBindings.Http.REQUEST) private req: Request) {} @get('/ping') @response(200, PING_RESPONSE) ping(): object { Return { greeting: 'Hello from LoopBack', @date: New @Date(), url:Me.req.url, headers: Object.assign({}, Me.req.headers)}; } }
上述代码的输出。
我们将开始创建一个示例应用程序,该应用程序使用LoopBack Node.js和IronPDF来创建一个包含动态生成信息的PDF文档。 这是一本带有详细解释的分步手册。
名为应用程序库IronPDF被开发以简化PDF的创建、编辑和维护。 通过此应用程序,开发人员可以从 HTML 文档中提取文本和图像,应用页眉和水印,合并多个 PDF 文档,并执行各种其他操作。 借助IronPDF的用户友好API和全面的文档,开发人员可以轻松自动创建高质量的PDF文档。 IronPDF 提供所有必要的功能和能力,以改善文档工作流程,并在各种场景下提供一流的用户体验,无论是用于准备发票、报告还是文档。
HTML 转换为 PDF 是一个简单快速的过程,可用于任何 HTML 内容,包括 CSS 和 JavaScript。
PDF 文件合并:为了简化文档管理任务,将多个 PDF 文档合并为一个 PDF 文件。
文本和图像提取:从PDF文件中提取文本和图像,使其可用于进一步的数据分析或处理。
水印:出于安全性或品牌化的原因,您可以在PDF页面上添加文本或图片水印。
包括页眉和页脚:PDF文档的页眉和页脚允许您包含自定义信息或页码。
要启用IronPDF功能,请使用Node包管理器安装必要的Node.js包。
npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install @ironsoftware/ironpdf
在创建的控制器文件中实现以下逻辑(report.controller.ts 或 report.controller.js js 文件)使用IronPDF创建PDF文档:
import {inject} from '@loopback/core';
import {
Request,
RestBindings,
get,
response,
ResponseObject,
oas,
param,
Response,
requestBody,
} from '@loopback/rest';
const IronPdf = require("@ironsoftware/ironpdf");
const document=IronPdf.PdfDocument;
var config=IronPdf.IronPdfGlobalConfig
config.setConfig({licenseKey:''});
/
* A simple controller to bounce back http requests
*/
export class ReportController {
@get('/generate-pdf', {
responses: {
'200': {
description: 'PDF file',
content: {'application/pdf': {schema: {type: 'string', format: 'binary'}}},
},
},
})
async generatePdf(): Promise<Buffer> {
// Example HTML content
const htmlContent = '<html><body><h1>Hello, IronPDF!</h1></body></html>';
const pdf = (await document.fromHtml(htmlContent));
const pdfBuffer=await pdf.saveAsBuffer();
return pdfBuffer;
}
constructor(@inject(RestBindings.Http.REQUEST) private req: Request) {}
}
import {inject} from '@loopback/core';
import {
Request,
RestBindings,
get,
response,
ResponseObject,
oas,
param,
Response,
requestBody,
} from '@loopback/rest';
const IronPdf = require("@ironsoftware/ironpdf");
const document=IronPdf.PdfDocument;
var config=IronPdf.IronPdfGlobalConfig
config.setConfig({licenseKey:''});
/
* A simple controller to bounce back http requests
*/
export class ReportController {
@get('/generate-pdf', {
responses: {
'200': {
description: 'PDF file',
content: {'application/pdf': {schema: {type: 'string', format: 'binary'}}},
},
},
})
async generatePdf(): Promise<Buffer> {
// Example HTML content
const htmlContent = '<html><body><h1>Hello, IronPDF!</h1></body></html>';
const pdf = (await document.fromHtml(htmlContent));
const pdfBuffer=await pdf.saveAsBuffer();
return pdfBuffer;
}
constructor(@inject(RestBindings.Http.REQUEST) private req: Request) {}
}
import
If True Then
inject
End If
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'from '@loopback/core'; import { Request, RestBindings, @get, response, ResponseObject, oas, param, Response, requestBody} from '@loopback/rest'; const IronPdf = require("@ironsoftware/ironpdf"); const document=IronPdf.PdfDocument; var config=IronPdf.IronPdfGlobalConfig config.setConfig({licenseKey:''}); / * A simple controller @to bounce back http requests */ export class ReportController { @get('/generate-pdf', { responses: { '200': { description: 'PDF file', content: {'application/pdf': {schema: {type: 'string', format: 'binary'}}}}}}) async generatePdf(): Promise<Buffer> { const htmlContent = '<html><body><h1> Hello, IronPDF!</h1></body></html>'; const pdf = (await document.fromHtml(htmlContent)); const pdfBuffer=await pdf.saveAsBuffer(); Return pdfBuffer; } constructor(@inject(RestBindings.Http.REQUEST) private req: Request) {} }
报告实例的创建和PDF生成由ReportController处理。 使用IronPDF将HTML内容转换为PDF缓冲区,并通过generatePdf方法返回。
要将 HTML 渲染为 PDF,generatePdf 函数使用 IronPDF。 LoopBack 控制器轻松处理此集成。 通过定义一个获取端点 /generate-pdf 来接收来自客户端的 HTML 内容。 我们通过使用IronPDF库在端点内将提供的HTML信息转换为PDF。
具体来说,我们使用pdf.saveAsBuffer()生成二进制缓冲区PDF 文件和 IronPdf.fromHtml(html内容)从JSON文件构建PDF对象。之后,客户端将收到带有正确MIME类型的缓冲区。(应用程序/pdf). 创建PDF时出现的任何问题都会被监听3000端口的服务器检测并记录。客户端会接收到500状态码作为响应。 此配置使得能够从HTML内容创建动态PDF,这在为Web应用程序创建账单、报告或其他文档时非常有用。
最后,IronPDF与LoopBack 4的集成为在线应用程序开发提供了强大的组合。 使用 LoopBack 4,开发人员可以轻松创建 RESTful API,该强大的框架使他们能专注于业务逻辑而不是模板代码。 然而,IronPDF 拥有顺畅的 PDF 生成功能,可以从 HTML 文本创建动态 PDF 文档。
此外,通过LoopBack 4和IronPDF的灵活性和易用性,开发过程被简化,使开发人员能够快速制作高质量的应用程序。 由于LoopBack 4管理API后端访问控制,而IronPDF处理PDF创建,开发人员可以专注于满足业务需求并提供出色的用户体验。
通过将IronPDF和Iron Software产品集成到您的开发栈中,我们可以为客户和终端用户提供功能丰富的高端软件解决方案。 此外,这一强大的基础将使优化后台系统和计划的流程变得更加容易。 起价为每件 $749 的是铁软件(Iron Software). 由于其详尽的文档、活跃的在线开发者社区以及频繁的更新,这些技术非常适合当代的软件开发项目。