UNPKG

@svengroup/openapi-to-pdf

Version:

Create PDF API reference documentation from OpenAPI 3.0.x specification files.

65 lines (36 loc) 2.07 kB
# Programmatic Usage You can use this tool inside your Javascript and TypeScript projects as a package. ## Installation First intall this package as a dependency in your project: ```shell npm i @svengroup/openapi-to-pdf ``` Then you can import the functions and types (if using TypeScript): ```ts import { generateMarkdown, generatePdf, OpenAPIV3, Config} from '@svengroup/openapi-to-pdf'; ``` Both functions accept an object that must match the `OpenAPIV3.Document` interface. Both functions also optionally accept an object that partially matches the `Config` type. See [configuration](./Configuration.md) for more information about the options available. ## Generating a PDF file You can use the `generatePdf` function to generate a PDF file similar to when using the cli. This function returns a promise to a `Buffer<ArrayBufferLike>` which is the PDF's file contents. This can then be saved to the local storage for further use or even saved externally to an object storage service like S3. ### Example: ```ts import { generatePdf, OpenAPIV3, Config } from '@svengroup/openapi-to-pdf'; import * as fs from 'fs'; const schema: OpenAPIV3.Document = {/* OpenAPI Schema */}; const config: Partial<Config> = { max_toc_level: 3}; const pdf_content = await generatePdf(schema, config); fs.writeFileSync('api-reference.pdf', pdf_content); ``` ## Generating Markdown Content You can also opt to simply extract the markdown content that the PDF file is actually based off of. This function returns a promise to a `string`. You can then do whatever you want with this like saving it as a `.md` file or processing it for displaying as HTML. > When using this function, the `texts.header`, `texts.footer` and `pdf_config` options of the configuration are ignored. ### Example: ```ts import { generateMarkdown, OpenAPIV3, Config } from '@svengroup/openapi-to-pdf'; const schema: OpenAPIV3.Document = {/* OpenAPI Schema */}; const config: Partial<Config> = { max_toc_level: 3}; const markdown_content = await generateMarkdown(schema, config); ```