PHPackages                             aschmelyun/ibis - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [PDF &amp; Document Generation](/categories/documents)
4. /
5. aschmelyun/ibis

ActiveLibrary[PDF &amp; Document Generation](/categories/documents)

aschmelyun/ibis
===============

Markdown to PDF book builder

27PHP

Since Nov 1Pushed 2y agoCompare

[ Source](https://github.com/aschmelyun/ibis)[ Packagist](https://packagist.org/packages/aschmelyun/ibis)[ RSS](/packages/aschmelyun-ibis/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

 [![Ibis logo](https://raw.githubusercontent.com/themsaid/ibis/master/art/cover.png)](https://raw.githubusercontent.com/themsaid/ibis/master/art/cover.png)

Artwork by [Eric L. Barnes](https://twitter.com/ericlbarnes) and [Caneco](https://twitter.com/Caneco) from [Laravel News](https://laravel-news.com/ibis-book-maker) ❤️.

---

This PHP tool helps you write eBooks in markdown. Run `ibis build` and an eBook will be generated with:

1. A cover photo.
2. Clickable auto-generated table of contents.
3. Code syntax highlighting.
4. Available in 2 themes. Light and dark.

Ibis was used to create [Laravel Queues in Action](https://learn-laravel-queues.com), an eBook I published in August 2020. [Click here](https://learn-laravel-queues.com/laravel-queues-in-action.zip) for the sample.

Installation
------------

[](#installation)

Make sure you have PHP7.3 or above installed on your system and that your gd extension is enabled in your php.ini file.

First, install the composer package globally:

```
composer global require themsaid/ibis

```

Then, run this command inside an empty directory:

```
ibis init

```

This will create the following files and directories:

- /assets
- /assets/fonts
- /assets/cover.jpg
- /assets/theme-light.html
- /assets/theme-dark.html
- /content
- /ibis.php

You may configure your book by editing the `/ibis.php` configuration file.

Writing Your eBook
------------------

[](#writing-your-ebook)

The `init` command will create sample .md files inside the content folder. You can explore those files to see how you can write your book. This sample content is taken from [Laravel Queues in Action](https://learn-laravel-queues.com).

Inside the content directory, you can write multiple `.md` files. Ibis uses the headings to divide the book into parts and chapters:

```
# Part 1

 tags define the start of a part. A separate PDF page will be generated to print the part title and any content below.

## Chapter 1

 tags define the start of a chapter. A chapter starts on a new page always.

### Starting with Ibis

 tags define different titles inside a chapter.

```

### Adding different quotes

[](#adding-different-quotes)

Three different types of quotes can be added: `quote`, `warning`, and `notice`.

```
>{quote} This is a quote.

>{warning} This is a warning.

>{notice} This is a notice.
```

### Using images

[](#using-images)

Images can be stored in the content folder and then brought in like this:

```
![Screenshot 1](content/screenshot-1.png)

```

### Adding a cover image

[](#adding-a-cover-image)

To use a cover image, add a `cover.jpg` in the `assets/` directory (or a `cover.html` file if you'd prefer a HTML-based cover page). If you don't want a cover image, delete these files.

Using Fonts
-----------

[](#using-fonts)

Edit your `/ibis.php` configuration files to define the font files to be loaded from the `/assets/fonts` directory. After that you may use the defined fonts in your themes (`/assets/theme-light.html` &amp; `/assets/theme-dark.html`).

Generating PDF eBook
--------------------

[](#generating-pdf-ebook)

```
ibis build

```

Ibis will parse the files in alphabetical order and store the PDF file in `/export`.

The default is to generate the PDF using the light theme, to generate a PDF using the dark theme:

```
ibis build dark

```

Generating A Sample
-------------------

[](#generating-a-sample)

```
ibis sample

ibis sample dark

```

This command will use the generated files from the `ibis build` command to generate samples from your PDF eBook. You can configure which pages to include in the sample by updating the `/ibis.php` file.

Development
-----------

[](#development)

This project uses PHP CS Fixer with a code standard defined in `.php_cs`.

To review code out of style, you can run the fix command as a dry run. Run the composer script like this:

`composer run csfix-review`

To fix the source code, run the following composer script:

`composer run csfix`

Credits
-------

[](#credits)

- [Mohamed Said](https://github.com/themsaid)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

16

—

LowBetter than 5% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity20

Early-stage or recently created project

 Bus Factor1

Top contributor holds 53% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/89d40a36efd670c752d8d6e488192d9ae78b9ff49503cf6b671f46d17cb67768?d=identicon)[aschmelyun](/maintainers/aschmelyun)

---

Top Contributors

[![themsaid](https://avatars.githubusercontent.com/u/4332182?v=4)](https://github.com/themsaid "themsaid (35 commits)")[![aschmelyun](https://avatars.githubusercontent.com/u/3395980?v=4)](https://github.com/aschmelyun "aschmelyun (9 commits)")[![aaronsaray](https://avatars.githubusercontent.com/u/956888?v=4)](https://github.com/aaronsaray "aaronsaray (4 commits)")[![tarekdj](https://avatars.githubusercontent.com/u/540268?v=4)](https://github.com/tarekdj "tarekdj (3 commits)")[![phikhi](https://avatars.githubusercontent.com/u/3796408?v=4)](https://github.com/phikhi "phikhi (3 commits)")[![elminson](https://avatars.githubusercontent.com/u/2476286?v=4)](https://github.com/elminson "elminson (1 commits)")[![jer3m01](https://avatars.githubusercontent.com/u/33844379?v=4)](https://github.com/jer3m01 "jer3m01 (1 commits)")[![liorchamla](https://avatars.githubusercontent.com/u/17835706?v=4)](https://github.com/liorchamla "liorchamla (1 commits)")[![owenvoke](https://avatars.githubusercontent.com/u/1899334?v=4)](https://github.com/owenvoke "owenvoke (1 commits)")[![shalvah](https://avatars.githubusercontent.com/u/14361073?v=4)](https://github.com/shalvah "shalvah (1 commits)")[![s-moon](https://avatars.githubusercontent.com/u/1986262?v=4)](https://github.com/s-moon "s-moon (1 commits)")[![aarondfrancis](https://avatars.githubusercontent.com/u/881931?v=4)](https://github.com/aarondfrancis "aarondfrancis (1 commits)")[![thinkverse](https://avatars.githubusercontent.com/u/2221746?v=4)](https://github.com/thinkverse "thinkverse (1 commits)")[![alexellis](https://avatars.githubusercontent.com/u/6358735?v=4)](https://github.com/alexellis "alexellis (1 commits)")[![amitmerchant1990](https://avatars.githubusercontent.com/u/3647841?v=4)](https://github.com/amitmerchant1990 "amitmerchant1990 (1 commits)")[![dcblogdev](https://avatars.githubusercontent.com/u/1018170?v=4)](https://github.com/dcblogdev "dcblogdev (1 commits)")[![eberkund](https://avatars.githubusercontent.com/u/4555959?v=4)](https://github.com/eberkund "eberkund (1 commits)")

### Embed Badge

![Health badge](/badges/aschmelyun-ibis/health.svg)

```
[![Health](https://phpackages.com/badges/aschmelyun-ibis/health.svg)](https://phpackages.com/packages/aschmelyun-ibis)
```

###  Alternatives

[phpoffice/phpspreadsheet

PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine

13.9k293.5M1.2k](/packages/phpoffice-phpspreadsheet)[spatie/browsershot

Convert a webpage to an image or pdf using headless Chrome

5.2k32.1M100](/packages/spatie-browsershot)[smalot/pdfparser

Pdf parser library. Can read and extract information from pdf file.

2.7k34.5M216](/packages/smalot-pdfparser)[barryvdh/laravel-snappy

Snappy PDF/Image for Laravel

2.8k24.8M48](/packages/barryvdh-laravel-snappy)[openspout/openspout

PHP Library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way

1.1k57.6M128](/packages/openspout-openspout)[keboola/csv

Keboola CSV reader and writer

1451.8M21](/packages/keboola-csv)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
