{"id":13394741,"url":"https://github.com/jorisschellekens/borb","last_synced_at":"2025-05-14T02:06:23.975Z","repository":{"id":37274953,"uuid":"310857764","full_name":"jorisschellekens/borb","owner":"jorisschellekens","description":"borb is a library for reading, creating and manipulating PDF files in python.","archived":false,"fork":false,"pushed_at":"2024-12-01T15:13:44.000Z","size":774087,"stargazers_count":3474,"open_issues_count":10,"forks_count":147,"subscribers_count":35,"default_branch":"master","last_synced_at":"2025-05-10T15:03:29.208Z","etag":null,"topics":["library","pdf","pdf-conversion","pdf-converter","pdf-generation","pdf-library","python","python3","sdk","typesetting"],"latest_commit_sha":null,"homepage":"https://borbpdf.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jorisschellekens.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"patreon":"borbpdf"}},"created_at":"2020-11-07T14:04:37.000Z","updated_at":"2025-05-10T01:39:11.000Z","dependencies_parsed_at":"2024-11-18T23:16:41.312Z","dependency_job_id":null,"html_url":"https://github.com/jorisschellekens/borb","commit_stats":{"total_commits":92,"total_committers":1,"mean_commits":92.0,"dds":0.0,"last_synced_commit":"b7033ba9e43f917db20c203f867b2431e382f343"},"previous_names":[],"tags_count":72,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jorisschellekens%2Fborb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jorisschellekens%2Fborb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jorisschellekens%2Fborb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jorisschellekens%2Fborb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jorisschellekens","download_url":"https://codeload.github.com/jorisschellekens/borb/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254052697,"owners_count":22006716,"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":["library","pdf","pdf-conversion","pdf-converter","pdf-generation","pdf-library","python","python3","sdk","typesetting"],"created_at":"2024-07-30T17:01:30.034Z","updated_at":"2025-05-14T02:06:18.963Z","avatar_url":"https://github.com/jorisschellekens.png","language":"Python","funding_links":["https://patreon.com/borbpdf"],"categories":["Python","library","Multi-Purpose Libraries","Resources"],"sub_categories":[],"readme":"\n# ![borb logo](https://github.com/jorisschellekens/borb/raw/master/logo/borb_64.png) borb\n\n\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Corpus Coverage : 100.0%](https://img.shields.io/badge/corpus%20coverage-100.0%25-green)]()\n[![Text Extraction : 93.1%](https://img.shields.io/badge/text%20extraction-93.1%25-green)]()\n[![Public Method Documentation : 100%](https://img.shields.io/badge/public%20method%20documentation-100%25-green)]()\n[![Number of Tests : 760](https://img.shields.io/badge/number%20of%20tests-760-green)]()\n[![Python : 3.8 | 3.9 | 3.10 ](https://img.shields.io/badge/python-3.8%20\u0026#124;%203.9%20\u0026#124;%203.10-green)]()\n[![Type Checking : 98%](https://img.shields.io/badge/type%20checking-98%25-green)]()\n\n\n[![Downloads](https://pepy.tech/badge/borb)](https://pepy.tech/project/borb)\n[![Downloads](https://pepy.tech/badge/borb/month)](https://pepy.tech/project/borb)\n\n`borb` is a library for creating and manipulating PDF files in python.\n\n## 0. About borb\n\n`borb` is a pure python library to read, write and manipulate PDF documents. \nIt represents a PDF document as a JSON-like datastructure of nested lists, dictionaries and primitives (numbers, string, booleans, etc)\n\nThis is currently a one-man project, so the focus will always be to support those use-cases that are more common in favor of those that are rare.\n\n📣 **Next (major) release**: You can track the status of the next release on a dedicated [GitHub Pages](https://jorisschellekens.github.io/borb-3-status/).\n\n## 1. About the Examples\n\nThe examples can be found in a separate repository.\nThis ensures the `borb` repository stays relatively small, whilst still providing a thorough knowledgebase of code-samples, screenshots and explanatory text.\n\n[Check out the examples repository here!](https://github.com/jorisschellekens/borb-examples)\n\nThey include; \n\n- Reading a PDF and extracting meta-information\n- Changing meta-information  \n- Extracting text from a PDF\n- Extracting images from a PDF\n- Changing images in a PDF\n- Adding annotations (notes, links, etc) to a PDF\n- Adding text to a PDF\n- Adding tables to a PDF\n- Adding lists to a PDF\n- Using a PageLayout manager\n\n and much more\n \n### 1.0 Installing `borb`\n\n`borb` can be installed using `pip`\n\n    pip install borb\n\nIf you have installed `borb` before, and you want to ensure `pip` downloads the latest version (rather than using its internal cache) you can use the following commands:\n\n    pip uninstall borb\n    pip install --no-cache borb\n\n### 1.1 Hello World\n\nTo give you an immediate idea of the way `borb` works, \nthis is the classic `Hello World` example, in `borb`:\n\n```python\nfrom pathlib import Path\n\nfrom borb.pdf import Document\nfrom borb.pdf import Page\nfrom borb.pdf import SingleColumnLayout\nfrom borb.pdf import Paragraph\nfrom borb.pdf import PDF\n\n# create an empty Document\npdf = Document()\n\n# add an empty Page\npage = Page()\npdf.add_page(page)\n\n# use a PageLayout (SingleColumnLayout in this case)\nlayout = SingleColumnLayout(page)\n\n# add a Paragraph object\nlayout.add(Paragraph(\"Hello World!\"))\n    \n# store the PDF\nwith open(Path(\"output.pdf\"), \"wb\") as pdf_file_handle:\n    PDF.dumps(pdf_file_handle, pdf)\n```\n\n## 2. License\n\n`borb` is dual licensed as AGPL/Commercial software.\n\nAGPL is a free / open source software license.\nThis doesn't mean the software is [gratis](https://en.wikipedia.org/wiki/Gratis_versus_libre)!\n\nBuying a license is mandatory as soon as you develop commercial activities distributing the borb software inside your product or deploying it on a network without disclosing the source code of your own applications under the AGPL license. \nThese activities include:\n\n- Offering paid services to customers as an ASP\n- Serving PDFs on the fly in the cloud or in a web application\n- Shipping `borb` with a closed source product\n\n[Contact sales](https://borbpdf.com/) for more information.\n\n## 3. Acknowledgements\n\nI would like to thank the following people, for their contributions / advice with regards to developing `borb`:\n- Aleksander Banasik\n- Benoît Lagae\n- Michael Klink\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjorisschellekens%2Fborb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjorisschellekens%2Fborb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjorisschellekens%2Fborb/lists"}