跳转到内容

集成 cookbook

NextPDF core 使用 PHP 生成 PDF 2.0。生态系统中的这九个集成包,会把这套引擎接入 Framework(框架)、渲染后端、既有旧代码、构建流程或网络服务。本页说明每个集成的用途,记录各自的包名与 core 版本约束(直接读取自各包的 composer.json),并链接到各集成的 recipe(示例)——这些示例会在来源 repository 发布其 docs/public/ 树时 aggregate(聚合)到此处。

本页是一份 Index(索引),因此不对任何集成作行为层面的主张。每个集成的 recipe 都由其所属 repository 维护。aggregator(文件聚合器)会把它们拉入本站;在某个示例聚合进来之前,下方链接指向的是一个 placeholder(占位符)。如需按使用场景选择集成,请参阅 选择一个整合。如需了解每个可执行示例遵循的约定,请参阅 范例约定

这九个包可归为五种形态。形态用于说明某个集成解决的是哪一类问题。

  • 框架集成 把 NextPDF 接入应用程序 framework 的服务 container(容器)与请求生命周期:nextpdf/laravelnextpdf/symfonynextpdf/codeigniter。你安装其中一个,从中 resolve(解析)出一个服务,然后返回一份 PDF response。
  • renderer(渲染器)桥接 把 HTML 转 PDF 或 Office 转 PDF 这一步委托给外部渲染后端,而不是进程内管线:nextpdf/artisan(通过 Chrome DevTools Protocol 操作 headless Chrome)、nextpdf/gotenberg(一个 Gotenberg microservice)、nextpdf/cloudflare(在 edge 边缘执行的 Cloudflare Browser Rendering)。
  • 一个兼容性 shim(兼容层) 让面向旧版 PDF 函数库编写的代码,无须改写即可调用 NextPDF:nextpdf/compat-legacy
  • 一个构建工具 为无法执行 8.4 的运行环境,生成 NextPDF 的 PHP 8.1 / 7.4 backport:nextpdf/backport-builder
  • 一个网络服务 通过 REST、gRPC 与 Model Context Protocol,把 NextPDF 开放给 AI 系统与远端调用端:nextpdf/server(以 NextPDF Connect 名义分发)。

以 HTTP 通信的 renderer bridge(nextpdf/gotenbergnextpdf/cloudflare,以及 nextpdf/laravel 中的 HTTP-client 路径)依赖宿主应用程序提供的 PSR-18 HTTP client。按照适用条款 PSR-18 §4,PSR-18 client 只有在完全无法发送请求时,才会抛出带类型的 client exception。HTTP 4xx5xx 响应是正常返回值,而不是异常——同一条 PSR-18 §4 条款也作此规定。调用远端 renderer 的示例,会将传输错误与非成功状态作为两种独立情况分别处理。

下方每个值都读取自指定包的 composer.json(权威来源)。core 约束即该包声明的 nextpdf/core 需求。nextpdf/backport-builder 并未声明任何 nextpdf/core 需求,因为它是转换引擎的源代码,而不是在运行时依赖引擎。

集成形态core 约束示例
Laravelnextpdf/laravel框架^3.0 || ^5.2Laravel quickstart 快速上手 [[/integrations/laravel/quickstart/]]
Symfonynextpdf/symfony框架^3.0 || ^5.2Symfony quickstart 快速上手 [[/integrations/symfony/quickstart/]]
CodeIgniter 4nextpdf/codeigniter框架^3.0 || ^5.2CodeIgniter quickstart 快速上手 [[/integrations/codeigniter/quickstart/]]
Artisan(Chrome 浏览器)nextpdf/artisanrenderer bridge(渲染器桥接)^3.0 || ^5.2Artisan quickstart 快速上手 [[/integrations/artisan/quickstart/]]
Gotenbergnextpdf/gotenberg渲染器桥接^3.0Gotenberg quickstart 快速上手 [[/integrations/gotenberg/quickstart/]]
Cloudflarenextpdf/cloudflare渲染器桥接^3.0Cloudflare quickstart 快速上手 [[/integrations/cloudflare/quickstart/]]
Compat(legacy 旧版)nextpdf/compat-legacy兼容层^3.0Compat-legacy quickstart 快速上手 [[/integrations/compat-legacy/quickstart/]]
backport builder(backport 构建器)nextpdf/backport-builder构建工具不适用Backport quickstart 快速上手 [[/integrations/backport/quickstart/]]
Connect(server 服务器)nextpdf/server网络服务^3.0Connect quickstart 快速上手 [[/integrations/connect/quickstart/]]

NextPDF 以产品名 NextPDF Connect 分发 nextpdf/server;它的 recipe 放在 connect slug 之下。nextpdf/compat-legacy 属于 compat 家族;它的 recipe 放在 compat-legacy slug 之下。

每个包在自己的运行环境上都要求 PHP >=8.4 <9.0nextpdf/backport-builder 的用途,正是生成可在 PHP 8.1(以及 7.4 目标)上执行的产物;在较旧运行环境上执行的是 backport 后的引擎,而不是这个构建器本身。

  • nextpdf/laravel —— 一个 Laravel 12 service provider、facade,以及 PDF response 辅助方法。当应用程序是 Laravel app,并且你希望从 container resolve 出 NextPDF、以 HTTP response 返回,同时不想手动接线时,就用它。示例:[[/integrations/laravel/quickstart/]]。
  • nextpdf/symfony —— 一个 Symfony 7 bundle(包),带有依赖注入服务与 PDF response 辅助方法。当应用程序是 Symfony app 时就用它;这个 bundle 会把引擎注册为一个服务,并与 symfony/http-foundation 的 response 集成。示例:[[/integrations/symfony/quickstart/]]。
  • nextpdf/codeigniter —— 一个 CodeIgniter 4 service、library wrapper,以及 PDF response 辅助方法。当应用程序是 CodeIgniter 4 app,并且你希望通过 framework 的 service locator 取用 NextPDF 时,就用它。示例:[[/integrations/codeigniter/quickstart/]]。
  • nextpdf/artisan —— 一个通过 Chrome DevTools Protocol 运行的 headless Chrome renderer。当文件需要浏览器的 CSS engine 来达到进程内 HTML 管线未锁定的版面保真度,并且你可以在应用程序附近运行一个 Chrome 进程时,就用它。示例:[[/integrations/artisan/quickstart/]]。
  • nextpdf/gotenberg —— 通过一个 Gotenberg microservice 执行 Office 转 PDF 与 HTML 转 PDF 转换。当输入是 Office 文件,或者渲染必须在另一个独立服务中以进程外方式执行时,就用它。它通过主机提供的 PSR-18 client 以 HTTP 通信。示例:[[/integrations/gotenberg/quickstart/]]。
  • nextpdf/cloudflare —— 通过 Cloudflare Browser Rendering API 执行 serverless 无服务器渲染。当渲染应在 edge 边缘执行,并且不需要运维任何常驻浏览器进程时,就用它。它通过主机提供的 PSR-18 client 以 HTTP 通信。示例:[[/integrations/cloudflare/quickstart/]]。
  • nextpdf/compat-legacy —— 一个兼容层,供面向旧版 PDF 函数库编写的代码使用。用它从既有代码调用 NextPDF,无须先改写调用点;它是迁移辅助工具,而不是永久依赖。示例:[[/integrations/compat-legacy/quickstart/]]。
  • nextpdf/backport-builder —— 一个基于 Rector 的降版管线,用于生成 NextPDF 的 PHP 8.1(以及 7.4 目标)构建版本。当某个运行环境无法升级到 PHP 8.4,而你又必须在那里使用引擎时,就用它。它是构建基础设施,不会被加入应用程序的运行时依赖。示例:[[/integrations/backport/quickstart/]]。
  • nextpdf/server(NextPDF Connect)—— 通过 REST API、gRPC 服务与 Model Context Protocol 开放 NextPDF。当调用端位于远端、使用另一种语言编写,或是需要工具 endpoint(而不是 PHP 函数库)的 AI 系统时,就用它。示例:[[/integrations/connect/quickstart/]]。

上方每一个 [[…]] placeholder,都是一个指向页面的前向参照——该页面由集成自己的 repository 在 docs/public/ 之下撰写,并由 aggregator 拉入本站。目标 slug 遵循同一套约定:

/integrations/<integration>/<recipe>/

上方「包与 core 约束参考」表中的 <integration> token 是直接取自包名的短名称;该表的每一列都会提供一个这样的短名称。每个集成发布的第一个 recipe 都命名为 quickstart;后续示例会使用额外的 <recipe> 区段,置于同一个 <integration> 根之下。在某个目标页面聚合进来之前,它的链接是一个 placeholder,无法解析。这份索引不对任何目标页面作行为层面的主张。它只记录经过 composer.json 验证的包事实,以及每个 repository 的示例将占用的 slug。

  • 选择一个整合 —— 一份「使用场景对应集成」的决策矩阵。
  • 范例约定 —— 本 cookbook 中每个可执行示例都遵循的约定。