{"id":23402632,"url":"https://github.com/martincastroalvarez/node-typescript-pdf-renderer","last_synced_at":"2026-04-13T02:04:59.272Z","repository":{"id":58810636,"uuid":"524422452","full_name":"MartinCastroAlvarez/node-typescript-pdf-renderer","owner":"MartinCastroAlvarez","description":"PDF rendering with Node \u0026 Typescript","archived":false,"fork":false,"pushed_at":"2023-02-25T23:32:35.000Z","size":44765,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-14T17:37:28.355Z","etag":null,"topics":["nodejs","sharp","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MartinCastroAlvarez.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-13T14:31:18.000Z","updated_at":"2023-03-08T05:41:23.000Z","dependencies_parsed_at":"2024-12-22T12:40:04.791Z","dependency_job_id":null,"html_url":"https://github.com/MartinCastroAlvarez/node-typescript-pdf-renderer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MartinCastroAlvarez%2Fnode-typescript-pdf-renderer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MartinCastroAlvarez%2Fnode-typescript-pdf-renderer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MartinCastroAlvarez%2Fnode-typescript-pdf-renderer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MartinCastroAlvarez%2Fnode-typescript-pdf-renderer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MartinCastroAlvarez","download_url":"https://codeload.github.com/MartinCastroAlvarez/node-typescript-pdf-renderer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247935902,"owners_count":21020913,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nodejs","sharp","typescript"],"created_at":"2024-12-22T12:29:48.041Z","updated_at":"2026-04-13T02:04:59.243Z","avatar_url":"https://github.com/MartinCastroAlvarez.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VEL\nPDF rendering with Node \u0026 Typescript\n\n![wallpaper](./muelle.jpeg)\n\n### References\n\n- [http://pdfkit.org/](http://pdfkit.org/)\n\n# Example\n\n### Rendering a book cover\n\n![sample](./screenshots/cover.png)\n\n### Rendering information about the authors\n\n![sample](./screenshots/biography.png)\n\n### Rendering the bibliography\n\n![sample](./screenshots/bibliography.png)\n\n### Rendering the table of contents\n\n![sample](./screenshots/contents.png)\n\n### Rendering chapters\n\n![sample](./screenshots/chapter.png)\n\n### Rendering rich text\n\n![sample](./screenshots/highlight.png)\n\n### Rendering images\n\n![sample](./screenshots/images.png)\n\n![sample](./screenshots/portraits.png)\n\n### Rendering code blocks\n\n![sample](./screenshots/code.png)\n\n# Software Architecture\n\n![architecture](./screenshots/architecture.png)\n\n# Software Design Patterns\n\n### [Adapter](https://refactoring.guru/design-patterns/adapter)\n\n\u003e Adapter is a structural design pattern that allows objects with incompatible interfaces to collaborate.\n\n### [Abstract Factory](https://refactoring.guru/design-patterns/abstract-factory)\n\n\u003e Abstract Factory is a creational design pattern that lets you produce families of related objects without specifying their concrete classes.\n\n### [Facade](https://refactoring.guru/design-patterns/facade)\n\n\u003e Facade is a structural design pattern that provides a simplified interface to a library, a framework, or any other complex set of classes.\n\n### [Builder](https://refactoring.guru/design-patterns/builder)\n\n\u003e Builder is a creational design pattern that lets you construct complex objects step by step. The pattern allows you to produce different types and representations of an object using the same construction code.\n\n### [Facade](https://refactoring.guru/design-patterns/facade)\n\n\u003e Facade is a structural design pattern that provides a simplified interface to a library, a framework, or any other complex set of classes.\n\n### [Command](https://refactoring.guru/design-patterns/command)\n\n\u003e Command is a behavioral design pattern that turns a request into a stand-alone object that contains all information about the request. This transformation lets you pass requests as a method arguments, delay or queue a request’s execution, and support undoable operations.\n\n### [Context](https://www.dre.vanderbilt.edu/~schmidt/PDF/Context-Object-Pattern.pdf)\n\n\u003e The goal of Context Object is not to pass lots of parameters to methods implicitly, as a means of by-passing strong typing and encapsulation. The goal is to store scoped data in a general, but managed way, independent of protocols and presentation technology.\n\n# Software Structure\n\n### Configuration\n\n|Path|Description|\n|--|--|\n|[persons](./persons)|Directory with YAML files with personal details that can be referenced.|\n|[topics](./topics)|Directory with YAML files with topics details that can be referenced.|\n|[config](./config)|Directory with YAML files with general configuration.|\n|[books](./books)|Directory with YAML files defining books.|\n|[code](./code)|Directory with YAML files with code blocks that can be referenced.|\n|[i18n](./i18n)|Directory with YAML files defining translations.|\n\n### Content\n\n|Path|Description|\n|--|--|\n|[fonts](./fonts)|This directory contains the files defining fonts.|\n|[images](./images)|This directory contains the images files that can be referenced.|\n\n#### Application\n\n|Path|Description|\n|--|--|\n|[render.js](./render.js)|The Node command line interface for rendering content.|\n|[builds](./builds)|This directory containes the results of rendering the books.|\n|[src](./src)|This directory contains the Node code that implements this application.|\n|[src/command.ts](./src/command.ts)|Application command line interface handler.|\n|[src/enums](./src/enums)|Application constants.|\n|[src/vocabulary](./src/vicabulary)|Application vocabulary used for scoring the quality of the text.|\n|[src/interfaces](./src/interfaces)|Application interfaces.|\n|[src/models](./src/models)|Application models.|\n|[src/serializers](./src/serializers)|Application serializer interfaces.|\n|[src/errors](./src/errors)|Application errors.|\n\n#### Products\n\n|Path|Description|\n|--|--|\n|[src/ebook](./src/products/ebook)|e-book rendering files.|\n|[src/video](./src/products/video)|Video rendering files.|\n|[src/html](./src/products/html)|HTML rendering files.|\n|[src/course](./src/products/course)|Course rendering files.|\n\n# Instructions\n\n### Installation\n\n```bash\nyarn install\n```\n\n### Rendering a PDF in English\n```bash\nyarn run build \u0026\u0026 yarn run render --title \"Sample\" --language \"en\" --format \"ebook\"\n```\n\nThe PDF is available [here](./builds/Sample/ebook/en/Final.pdf)\n\n### Rendering a PDF in Spanish\n\n```bash\nyarn run build \u0026\u0026 yarn run render --title \"Sample\" --language \"es\" --format \"ebook\"\n```\n\nThe PDF is available [here](./builds/Sample/ebook/es/Final.pdf)\n\n### Rendering a PDF in multiple languages\n\n```bash\nyarn run build \u0026\u0026 yarn run render --title \"Sample\" --language \"en,es\" --format \"ebook\"\n```\n\nThe PDF is available [here](./builds/Sample/pdf/es/Final.pdf) and [here](./builds/Sample/pdf/en/Final.pdf)\n\n### Rendering a PDF in multiple languages\n```bash\nyarn run build \u0026\u0026 yarn run render --title \"Start\" --language \"en\" --format \"ebook\"\nyarn run build \u0026\u0026 yarn run render --title \"Start\" --language \"es\" --format \"ebook\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartincastroalvarez%2Fnode-typescript-pdf-renderer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmartincastroalvarez%2Fnode-typescript-pdf-renderer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartincastroalvarez%2Fnode-typescript-pdf-renderer/lists"}