# Installer Library

This folder contains the Dockerfiles for building certain installers or libraries, which are then pulled into the main image.

## [jbig2enc](https://github.com/agl/jbig2enc)

### Why

JBIG is an image coding which can achieve better compression of images for PDFs.

### What

The Docker image builds a shared library file and utility, which is copied into the correct location in the final image.

### Updating

1. Ensure the given qpdf version is present in [Debian bookworm](https://packages.debian.org/bookworm/qpdf)
2. Update `.build-config.json` to the given version
3. If the Debian specific version has incremented, update `Dockerfile.qpdf`

See Also:

- [OCRMyPDF Documentation](https://ocrmypdf.readthedocs.io/en/latest/jbig2.html)

## [psycopg2](https://www.psycopg.org/)

### Why

The pre-built wheels of psycopg2 are built on Debian 9, which provides a quite old version of libpq-dev. This causes issue with authentication methods.

### What

The image builds psycopg2 wheels on Debian 10 and places the produced wheels into `/usr/src/wheels/`.

See Also:

- [Issue 266](https://github.com/paperless-ngx/paperless-ngx/issues/266)

## [qpdf](https://qpdf.readthedocs.io/en/stable/index.html)

### Why

qpdf and it's library provide tools to read, manipulate and fix up PDFs. Version 11 is also required by `pikepdf` 6+ and Debian 9 does not provide above version 10.

### What

The Docker image cross compiles .deb installers for each supported architecture of the main image. The installers are placed in `/usr/src/qpdf/${QPDF_VERSION}/${TARGETARCH}${TARGETVARIANT}/`

## [pikepdf](https://pikepdf.readthedocs.io/en/latest/)

### Why

Required by OCRMyPdf, this is a general purpose library for PDF manipulation in Python via the qpdf libraries.

### What

The built wheels are placed into `/usr/src/wheels/`