types on FPDF.title, FPDF.add_font() and FPDF.output()
added missing files to navigation tree in mkdocs.yml - thanks to @paulsuh
Changed
reverted changes to ImageInfo that impacted user-facing API
prefer outline glyphs over bitmap if the font has both
Strict typing, SVG gradients, Support more font formats (WOFF, WOFF2, TTC/OTC, EBDT/EBLC), new transform() context manager and several bugfixes
[2.8.6] - 2026-02-18
Added
support for FPDF.transform() context manager to apply geometric transformations (translation, rotation, scaling, skewing) to the current graphics state - thanks to @RaphaelFLT
mypy and pyright checks in the CI pipeline to enforce strict typing
support WOFF and WOFF2 fonts - thanks to @BharathPESU
TTC/OTC face selection via collection_font_number in add_font()
CID-keyed CFF font embedding support
Microsoft Symbol font remapping for non-Unicode cmaps
support for EBDT/EBLC bitmap fonts
Fixed
the A5 value that could be specified as page format to the FPDF constructor was slightly incorrect, and the corresponding page dimensions have been fixed. This could lead to a minor change in your documents dimensions if you used this A5 page format. - cf. [issue #1699](py-pdf/fpdf2#1699)
a bug when rendering empty tables with INTERNAL layout, that caused an extra border to be rendered due to an erroneous use of list.index() - cf. [issue #1669](py-pdf/fpdf2#1669)
edge cases where tiny floating-point drift could trigger incorrect behaviour like [issue #1393](py-pdf/fpdf2#1393)
parentheses are now escaped in more places. This fixes embedding a file with a single parenthesis in the filename, but might also have impacts on e.g. section names.
types on FPDF.title, FPDF.add_font() and FPDF.output()
added missing files to navigation tree in mkdocs.yml - thanks to @paulsuh
Changed
reverted changes to ImageInfo that impacted user-facing API
prefer outline glyphs over bitmap if the font has both
[2.8.6] - 2026-02-18
Added
support for FPDF.transform() context manager to apply geometric transformations (translation, rotation, scaling, skewing) to the current graphics state - thanks to @RaphaelFLT
mypy and pyright checks in the CI pipeline to enforce strict typing
support WOFF and WOFF2 fonts - thanks to @BharathPESU
TTC/OTC face selection via collection_font_number in add_font()
CID-keyed CFF font embedding support
Microsoft Symbol font remapping for non-Unicode cmaps
support for EBDT/EBLC bitmap fonts
Fixed
the A5 value that could be specified as page format to the FPDF constructor was slightly incorrect, and the corresponding page dimensions have been fixed. This could lead to a minor change in your documents dimensions if you used this A5 page format. - cf. [issue #1699](py-pdf/fpdf2#1699)
a bug when rendering empty tables with INTERNAL layout, that caused an extra border to be rendered due to an erroneous use of list.index() - cf. [issue #1669](py-pdf/fpdf2#1669)
edge cases where tiny floating-point drift could trigger incorrect behaviour like [issue #1393](py-pdf/fpdf2#1393)
parentheses are now escaped in more places. This fixes embedding a file with a single parenthesis in the filename, but might also have impacts on e.g. section names.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase will rebase this PR
@dependabot recreate will recreate this PR, overwriting any edits that have been made to it
@dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
@dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
@dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
@dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/open-webui/open-webui/pull/22014
**Author:** [@dependabot[bot]](https://github.com/apps/dependabot)
**Created:** 3/1/2026
**Status:** ❌ Closed
**Base:** `dev` ← **Head:** `dependabot/pip/backend/dev/fpdf2-2.8.7`
---
### 📝 Commits (1)
- [`e4e0b4c`](https://github.com/open-webui/open-webui/commit/e4e0b4cbf40d6be12643179c2b2ea312833e9d5a) chore(deps): bump fpdf2 from 2.8.5 to 2.8.7 in /backend
### 📊 Changes
**1 file changed** (+1 additions, -1 deletions)
<details>
<summary>View changed files</summary>
📝 `backend/requirements.txt` (+1 -1)
</details>
### 📄 Description
Bumps [fpdf2](https://github.com/py-pdf/fpdf2) from 2.8.5 to 2.8.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/py-pdf/fpdf2/releases">fpdf2's releases</a>.</em></p>
<blockquote>
<h2>Several bugfixes</h2>
<h2>[2.8.7] - 2026-02-28</h2>
<h3>Fixed</h3>
<ul>
<li>types on <code>FPDF.title</code>, <code>FPDF.add_font()</code> and <code>FPDF.output()</code></li>
<li>added missing files to navigation tree in mkdocs.yml - thanks to <a href="https://github.com/paulsuh"><code>@paulsuh</code></a></li>
</ul>
<h3>Changed</h3>
<ul>
<li>reverted changes to <code>ImageInfo</code> that impacted user-facing API</li>
<li>prefer outline glyphs over bitmap if the font has both</li>
</ul>
<h2>Strict typing, SVG gradients, Support more font formats (WOFF, WOFF2, TTC/OTC, EBDT/EBLC), new transform() context manager and several bugfixes</h2>
<h2>[2.8.6] - 2026-02-18</h2>
<h3>Added</h3>
<ul>
<li>support for <code>FPDF.transform()</code> context manager to apply geometric transformations (translation, rotation, scaling, skewing) to the current graphics state - thanks to <a href="https://github.com/RaphaelFLT"><code>@RaphaelFLT</code></a></li>
<li>support for SVG <code><linearGradient></code> and <code><radialGradient></code> elements - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1580">#1580</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1580">py-pdf/fpdf2#1580</a>) - thanks to <a href="https://github.com/Ani07-05"><code>@Ani07-05</code></a></li>
<li>mypy and pyright checks in the CI pipeline to enforce strict typing</li>
<li>support WOFF and WOFF2 fonts - thanks to <a href="https://github.com/BharathPESU"><code>@BharathPESU</code></a></li>
<li>TTC/OTC face selection via <code>collection_font_number</code> in <code>add_font()</code></li>
<li>CID-keyed CFF font embedding support</li>
<li>Microsoft Symbol font remapping for non-Unicode cmaps</li>
<li>support for EBDT/EBLC bitmap fonts</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>the <code>A5</code> value that could be specified as page <code>format</code> to the <code>FPDF</code> constructor was slightly incorrect, and the corresponding page dimensions have been fixed. This could lead to a minor change in your documents dimensions if you used this <code>A5</code> page format. - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1699">#1699</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1699">py-pdf/fpdf2#1699</a>)</li>
<li>a bug when rendering empty tables with <code>INTERNAL</code> layout, that caused an extra border to be rendered due to an erroneous use of <code>list.index()</code> - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1669">#1669</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1669">py-pdf/fpdf2#1669</a>)</li>
<li>edge cases where tiny floating-point drift could trigger incorrect behaviour like [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1393">#1393</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1393">py-pdf/fpdf2#1393</a>)</li>
<li>parentheses are now escaped in more places. This fixes embedding a file with a single parenthesis in the filename, but might also have impacts on e.g. section names.</li>
<li>parsing markdown sequences with escape character - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1236">#1236</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1236">py-pdf/fpdf2#1236</a>) - thanks <a href="https://github.com/amidou-naba"><code>@amidou-naba</code></a></li>
</ul>
<h3>Changed</h3>
<ul>
<li>improved performance when rendering paths, SVGs, and opaque raster images with an alpha channel - <em>cf.</em> [PR <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1675">#1675</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/pull/1675">py-pdf/fpdf2#1675</a>)</li>
<li>typing annotations added across the codebase as part of the strict typing rollout</li>
<li>graphics state snapshots now use a <a href="https://py-pdf.github.io/fpdf2/fpdf/graphics_state.html"><code>GraphicsState</code> dataclass</a> dataclass for clearer usage and stronger typing</li>
<li><code>rotation()</code>, <code>skew()</code>, and <code>mirror()</code> now delegate to <code>transform()</code> for standardized transform application</li>
<li><a href="https://py-pdf.github.io/fpdf2/fpdf/image_datastructures.html#fpdf.image_datastructures.ImageInfo">ImageInfo</a> now uses typed dictionaries for clearer usage and stronger typing</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/py-pdf/fpdf2/blob/master/CHANGELOG.md">fpdf2's changelog</a>.</em></p>
<blockquote>
<h2>[2.8.7] - 2026-02-28</h2>
<h3>Fixed</h3>
<ul>
<li>types on <code>FPDF.title</code>, <code>FPDF.add_font()</code> and <code>FPDF.output()</code></li>
<li>added missing files to navigation tree in mkdocs.yml - thanks to <a href="https://github.com/paulsuh"><code>@paulsuh</code></a></li>
</ul>
<h3>Changed</h3>
<ul>
<li>reverted changes to <code>ImageInfo</code> that impacted user-facing API</li>
<li>prefer outline glyphs over bitmap if the font has both</li>
</ul>
<h2>[2.8.6] - 2026-02-18</h2>
<h3>Added</h3>
<ul>
<li>support for <code>FPDF.transform()</code> context manager to apply geometric transformations (translation, rotation, scaling, skewing) to the current graphics state - thanks to <a href="https://github.com/RaphaelFLT"><code>@RaphaelFLT</code></a></li>
<li>support for SVG <code><linearGradient></code> and <code><radialGradient></code> elements - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1580">#1580</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1580">py-pdf/fpdf2#1580</a>) - thanks to <a href="https://github.com/Ani07-05"><code>@Ani07-05</code></a></li>
<li>mypy and pyright checks in the CI pipeline to enforce strict typing</li>
<li>support WOFF and WOFF2 fonts - thanks to <a href="https://github.com/BharathPESU"><code>@BharathPESU</code></a></li>
<li>TTC/OTC face selection via <code>collection_font_number</code> in <code>add_font()</code></li>
<li>CID-keyed CFF font embedding support</li>
<li>Microsoft Symbol font remapping for non-Unicode cmaps</li>
<li>support for EBDT/EBLC bitmap fonts</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>the <code>A5</code> value that could be specified as page <code>format</code> to the <code>FPDF</code> constructor was slightly incorrect, and the corresponding page dimensions have been fixed. This could lead to a minor change in your documents dimensions if you used this <code>A5</code> page format. - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1699">#1699</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1699">py-pdf/fpdf2#1699</a>)</li>
<li>a bug when rendering empty tables with <code>INTERNAL</code> layout, that caused an extra border to be rendered due to an erroneous use of <code>list.index()</code> - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1669">#1669</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1669">py-pdf/fpdf2#1669</a>)</li>
<li>edge cases where tiny floating-point drift could trigger incorrect behaviour like [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1393">#1393</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1393">py-pdf/fpdf2#1393</a>)</li>
<li>parentheses are now escaped in more places. This fixes embedding a file with a single parenthesis in the filename, but might also have impacts on e.g. section names.</li>
<li>parsing markdown sequences with escape character - <em>cf.</em> [issue <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1236">#1236</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1236">py-pdf/fpdf2#1236</a>) - thanks <a href="https://github.com/amidou-naba"><code>@amidou-naba</code></a></li>
</ul>
<h3>Changed</h3>
<ul>
<li>improved performance when rendering paths, SVGs, and opaque raster images with an alpha channel - <em>cf.</em> [PR <a href="https://redirect.github.com/py-pdf/fpdf2/issues/1675">#1675</a>](<a href="https://redirect.github.com/py-pdf/fpdf2/pull/1675">py-pdf/fpdf2#1675</a>)</li>
<li>typing annotations added across the codebase as part of the strict typing rollout</li>
<li>graphics state snapshots now use a <a href="https://py-pdf.github.io/fpdf2/fpdf/graphics_state.html"><code>GraphicsState</code> dataclass</a> dataclass for clearer usage and stronger typing</li>
<li><code>rotation()</code>, <code>skew()</code>, and <code>mirror()</code> now delegate to <code>transform()</code> for standardized transform application</li>
<li><a href="https://py-pdf.github.io/fpdf2/fpdf/image_datastructures.html#fpdf.image_datastructures.ImageInfo">ImageInfo</a> now uses typed dictionaries for clearer usage and stronger typing</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/py-pdf/fpdf2/commit/3e87ce146f0f663d2308fc27a19bd1dde5509ad2"><code>3e87ce1</code></a> release v2.8.7 (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1770">#1770</a>)</li>
<li><a href="https://github.com/py-pdf/fpdf2/commit/0d37af8e71c35922928a22696dabc9f83598b759"><code>0d37af8</code></a> Revert "Refactor image info (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1721">#1721</a>)" (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1769">#1769</a>)</li>
<li><a href="https://github.com/py-pdf/fpdf2/commit/b59c6d06ac06ddb5c4350cb4d63ae3f7bc4c12ab"><code>b59c6d0</code></a> chore(deps): update crate-ci/typos action to v1.44.0 (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1768">#1768</a>)</li>
<li><a href="https://github.com/py-pdf/fpdf2/commit/41d563c8a9521208c1b42c601db7cc2c9e2270f3"><code>41d563c</code></a> add paulsuh as a contributor for doc (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1767">#1767</a>)</li>
<li><a href="https://github.com/py-pdf/fpdf2/commit/3157675d1a194eca43516a2339c076d93e69f061"><code>3157675</code></a> Add missing files to docs nav tree (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1766">#1766</a>)</li>
<li><a href="https://github.com/py-pdf/fpdf2/commit/8b5387d96694f1de20248c24c57b29c94efc87ba"><code>8b5387d</code></a> fix ebdt font detection (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1763">#1763</a>)</li>
<li><a href="https://github.com/py-pdf/fpdf2/commit/166e67373f209bb2bb7b50265c2ec73f4cc6d196"><code>166e673</code></a> chore(deps): update step-security/harden-runner action to v2.15.0 (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1762">#1762</a>)</li>
<li><a href="https://github.com/py-pdf/fpdf2/commit/eee02ab21f94d8b0bf98852bcb2bba1b958f3a85"><code>eee02ab</code></a> add srittau as a contributor for code (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1759">#1759</a>)</li>
<li><a href="https://github.com/py-pdf/fpdf2/commit/11289c383ba27ae958a3346006c712b1cd4880f4"><code>11289c3</code></a> Fix a few typing issues (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1757">#1757</a>)</li>
<li><a href="https://github.com/py-pdf/fpdf2/commit/f97b518acbb79529a4fbeca88d3cd14c9256c6ac"><code>f97b518</code></a> chore(deps): update github/codeql-action action to v4.32.4 (<a href="https://redirect.github.com/py-pdf/fpdf2/issues/1758">#1758</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/py-pdf/fpdf2/compare/2.8.5...2.8.7">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/open-webui/open-webui/pull/22014
Author: @dependabot[bot]
Created: 3/1/2026
Status: ❌ Closed
Base:
dev← Head:dependabot/pip/backend/dev/fpdf2-2.8.7📝 Commits (1)
e4e0b4cchore(deps): bump fpdf2 from 2.8.5 to 2.8.7 in /backend📊 Changes
1 file changed (+1 additions, -1 deletions)
View changed files
📝
backend/requirements.txt(+1 -1)📄 Description
Bumps fpdf2 from 2.8.5 to 2.8.7.
Release notes
Sourced from fpdf2's releases.
Changelog
Sourced from fpdf2's changelog.
Commits
3e87ce1release v2.8.7 (#1770)0d37af8Revert "Refactor image info (#1721)" (#1769)b59c6d0chore(deps): update crate-ci/typos action to v1.44.0 (#1768)41d563cadd paulsuh as a contributor for doc (#1767)3157675Add missing files to docs nav tree (#1766)8b5387dfix ebdt font detection (#1763)166e673chore(deps): update step-security/harden-runner action to v2.15.0 (#1762)eee02abadd srittau as a contributor for code (#1759)11289c3Fix a few typing issues (#1757)f97b518chore(deps): update github/codeql-action action to v4.32.4 (#1758)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.