Skip to main content

High-performance PDF generation from HTML/CSS/Tailwind — Rust-powered Python library

Project description

FerroPDF

High-performance PDF generation from HTML, CSS, and Tailwind templates.

FerroPDF is a Rust-powered PDF rendering engine with a clean Python API. Complex reports render in under 6ms.

Features

  • Blazing fast — Rust core engine, <100ms for simple documents
  • Full HTML/CSS support — HTML5 parsing, CSS3 styling, flexbox, tables
  • Tailwind CSS — Use utility classes directly, no build step required
  • Template rendering — Jinja2 templates with context variables
  • Django integration — Template rendering, HttpResponse helpers, CBV mixin, middleware
  • FastAPI integration — PdfResponse, async rendering, streaming support
  • Parallel batch rendering — Generate hundreds of PDFs concurrently via Rayon
  • Minimal memory footprint — Efficient Rust memory management
  • Custom fonts — Register and use TrueType/OpenType fonts
  • Page management — Headers, footers, page numbers, page breaks

Quick Start

Installation

pip install ferropdf

Basic Usage

from fastpdf import render_pdf, render_pdf_to_file, RenderOptions

# Render HTML to PDF bytes
pdf_bytes = render_pdf("<h1>Hello World</h1>")

# Save to file
render_pdf_to_file("<h1>Hello</h1>", "output.pdf")

# With custom options
options = RenderOptions(
    page_size="A4",
    margin_top=20.0,
    title="My Document",
    author="FerroPDF",
)
pdf_bytes = render_pdf(html, options=options)

With CSS

html = "<h1>Styled Document</h1><p class='intro'>Hello!</p>"
css = """
h1 { color: #1a56db; border-bottom: 2px solid #1a56db; }
.intro { font-size: 14pt; color: #6b7280; }
"""
pdf_bytes = render_pdf(html, css=css)

Tailwind CSS

html = """
<div class="p-8">
    <h1 class="text-3xl font-bold text-blue-600 mb-4">Invoice</h1>
    <p class="text-gray-600">Generated with Tailwind CSS</p>
</div>
"""
pdf_bytes = render_pdf(html, options=RenderOptions(tailwind=True))

Template Rendering

from fastpdf import render_pdf_from_template

pdf_bytes = render_pdf_from_template(
    "invoice.html",
    context={
        "customer": "Acme Corp",
        "items": [{"name": "Widget", "price": 9.99}],
        "total": 9.99,
    },
    template_dir="templates/",
)

Engine (Shared Configuration)

from fastpdf import PdfEngine, RenderOptions

engine = PdfEngine(
    template_dir="templates/",
    default_options=RenderOptions(page_size="A4", tailwind=True),
)

# Register custom fonts
engine.register_font("CustomFont", "/path/to/font.ttf")

# Render multiple documents
doc1 = engine.render("<h1>Document 1</h1>")
doc2 = engine.render_template("report.html", context={"data": data})

doc1.save("doc1.pdf")
doc2.save("doc2.pdf")

Batch Rendering (Parallel)

from fastpdf import batch_render

items = [
    {"html": f"<h1>Invoice #{i}</h1>"} for i in range(100)
]
pdf_list = batch_render(items)  # Rendered in parallel via Rayon

Django Integration

# views.py
from fastpdf.contrib.django import render_to_pdf_response, PdfView

# Function-based view
def invoice_pdf(request, pk):
    invoice = get_object_or_404(Invoice, pk=pk)
    return render_to_pdf_response(
        request,
        "invoices/invoice.html",
        {"invoice": invoice},
        filename="invoice.pdf",
    )

# Class-based view
class ReportPdfView(PdfView, DetailView):
    model = Report
    template_name = "reports/detail.html"
    pdf_filename = "report.pdf"

Django Middleware

Add automatic PDF conversion with ?format=pdf:

# settings.py
MIDDLEWARE = [
    ...
    "fastpdf.contrib.django.PdfMiddleware",
]

# settings.py (optional)
FERROPDF = {
    "DEFAULT_PAGE_SIZE": "A4",
    "DEFAULT_MARGIN": 15.0,
    "TAILWIND": True,
}

FastAPI Integration

from fastapi import FastAPI
from fastpdf.contrib.fastapi import PdfResponse, render_pdf_async

app = FastAPI()

@app.get("/invoice/{id}")
async def get_invoice(id: int):
    html = f"<h1>Invoice #{id}</h1>"
    return PdfResponse(html, filename=f"invoice-{id}.pdf")

@app.get("/report")
async def get_report():
    # Async rendering (non-blocking)
    pdf_bytes = await render_pdf_async("<h1>Report</h1>")
    return Response(content=pdf_bytes, media_type="application/pdf")

API Reference

render_pdf(html, *, css=None, options=None) → bytes

Render HTML string to PDF bytes.

render_pdf_to_file(html, path, *, css=None, options=None) → PdfDocument

Render HTML and save to file. Returns PdfDocument for inspection.

render_pdf_from_template(template_name, *, context=None, template_dir=None, css=None, options=None) → bytes

Render a Jinja2 template to PDF bytes.

batch_render(items, *, options=None, parallel=True) → list[bytes]

Render multiple documents in parallel. Each item is a dict with "html" and optional "css" keys.

RenderOptions

Parameter Type Default Description
page_size str | tuple "A4" Page size name or (width_mm, height_mm)
orientation str "portrait" "portrait" or "landscape"
margin_top float 10.0 Top margin in mm
margin_right float 10.0 Right margin in mm
margin_bottom float 10.0 Bottom margin in mm
margin_left float 10.0 Left margin in mm
title str | None None PDF title metadata
author str | None None PDF author metadata
tailwind bool False Enable Tailwind CSS resolution
base_path str | None None Base path for asset resolution
header_html str | None None Running header HTML
footer_html str | None None Running footer HTML

PdfDocument

Method/Property Description
.to_bytes() Get raw PDF bytes
.save(path) Write to file
.page_count Number of pages
.title Document title

PdfEngine

Method Description
.render(html, *, css, options) Render HTML to PdfDocument
.render_template(name, *, context, css, options) Render Jinja2 template
.render_to_file(html, path, *, css, options) Render and save
.batch_render(items, *, options, parallel) Parallel batch render
.register_font(name, path) Register custom font

Architecture

┌─────────────────────────────────────────────────┐
│                  Python API                      │
│  render_pdf() · PdfEngine · Django · FastAPI     │
├─────────────────────────────────────────────────┤
│              PyO3 Bindings Layer                 │
├─────────────────────────────────────────────────┤
│                Rust Core Engine                  │
│                                                  │
│  ┌──────────┐  ┌──────────┐  ┌──────────────┐  │
│  │  HTML     │  │  CSS     │  │  Tailwind    │  │
│  │  Parser   │  │  Parser  │  │  Resolver    │  │
│  │(html5ever)│  │ (custom) │  │  (custom)    │  │
│  └────┬─────┘  └────┬─────┘  └──────┬───────┘  │
│       │              │               │           │
│       ▼              ▼               ▼           │
│  ┌──────────────────────────────────────────┐   │
│  │          Style Resolution                 │   │
│  │    (selector matching, inheritance)       │   │
│  └────────────────┬─────────────────────────┘   │
│                   │                              │
│                   ▼                              │
│  ┌──────────────────────────────────────────┐   │
│  │          Layout Engine                    │   │
│  │  (block, inline, flex, table, pagination) │   │
│  └────────────────┬─────────────────────────┘   │
│                   │                              │
│                   ▼                              │
│  ┌──────────────────────────────────────────┐   │
│  │        Renderer (Paint Commands)          │   │
│  └────────────────┬─────────────────────────┘   │
│                   │                              │
│                   ▼                              │
│  ┌──────────────────────────────────────────┐   │
│  │       PDF Generator (printpdf)            │   │
│  └──────────────────────────────────────────┘   │
└─────────────────────────────────────────────────┘

Performance

Criterion.rs benchmarks (statistical)

Measured with Criterion.rs — 100 samples per benchmark, 95% confidence intervals. Machine: Intel Core i5-10210U (4C/8T, 1.6–4.2 GHz), 24 GB RAM, Debian 12.

Full pipeline (HTML+CSS → PDF)

Document Time (95% CI)
Simple HTML (<h1> + <p>) 160–167 µs
Styled HTML (headings, lists, CSS) 481–543 µs
Complex report (tables, metrics, multi-section) 1.32–1.34 ms

Table scaling

Rows Time (95% CI)
10 rows 874 µs – 1.05 ms
25 rows 1.51–1.57 ms
50 rows 3.23–3.81 ms
100 rows 6.14–6.51 ms

Individual pipeline stages (complex report)

Stage Time (95% CI)
HTML parsing 102–113 µs
CSS parsing 8.0–8.7 µs
Layout engine 502–555 µs
Paint commands 47.7–49.3 µs
PDF generation 735–837 µs

Tailwind

Operation Time (95% CI)
Extract classes 85–88 µs
Resolve classes → CSS 47–52 µs

Reproduce locally:

cd rust-engine && cargo bench --bench render_bench

The CI also runs benchmarks on every push — see the Benchmarks workflow.

Python-level benchmarks

Run python benchmarks/benchmark.py for end-to-end measurements including PyO3 overhead.

Development

Prerequisites

  • Rust 1.70+ (for the engine)
  • Python 3.8+
  • maturin (pip install maturin)

Building

# Development build
maturin develop

# Release build
maturin build --release

# Run Rust tests
cd rust-engine && cargo test

# Run Python tests
pytest tests/python/

Project Structure

ferropdf/
├── rust-engine/           # Rust core engine
│   ├── Cargo.toml
│   └── src/
│       ├── lib.rs          # Module entry point
│       ├── bindings.rs     # PyO3 Python bindings
│       ├── error.rs        # Error types
│       ├── html/           # HTML5 parser (html5ever)
│       ├── css/            # CSS parser & value types
│       ├── layout/         # Box model, layout, pagination
│       ├── fonts/          # Font cache & management
│       ├── images/         # Image loading & caching
│       ├── tailwind/       # Tailwind CSS resolver
│       ├── renderer/       # Paint command generation
│       └── pdf/            # PDF file generation (printpdf)
├── python-wrapper/        # Python package
│   └── fastpdf/
│       ├── __init__.py     # Public API
│       ├── core.py         # Core wrapper classes
│       ├── utils.py        # Utility helpers
│       └── contrib/
│           ├── django.py   # Django integration
│           └── fastapi.py  # FastAPI integration
├── examples/              # Usage examples
├── benchmarks/            # Performance benchmarks
├── tests/                 # Test suites
└── pyproject.toml         # Build configuration

License

MIT OR Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ferropdf-0.1.0.tar.gz (92.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ferropdf-0.1.0-cp313-cp313-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.13Windows x86-64

ferropdf-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

ferropdf-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

ferropdf-0.1.0-cp313-cp313-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

ferropdf-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

ferropdf-0.1.0-cp312-cp312-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.12Windows x86-64

ferropdf-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

ferropdf-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

ferropdf-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

ferropdf-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

ferropdf-0.1.0-cp311-cp311-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.11Windows x86-64

ferropdf-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

ferropdf-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

ferropdf-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

ferropdf-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

ferropdf-0.1.0-cp310-cp310-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.10Windows x86-64

ferropdf-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

ferropdf-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

ferropdf-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

ferropdf-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

ferropdf-0.1.0-cp39-cp39-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.9Windows x86-64

ferropdf-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

ferropdf-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

ferropdf-0.1.0-cp39-cp39-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

ferropdf-0.1.0-cp39-cp39-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

File details

Details for the file ferropdf-0.1.0.tar.gz.

File metadata

  • Download URL: ferropdf-0.1.0.tar.gz
  • Upload date:
  • Size: 92.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for ferropdf-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e19be03f65ee3765f871c6535b045b60c053228efe1edeabebad9647f87d41fe
MD5 47e65b9b199f9ca397b502c0bf8c1a34
BLAKE2b-256 a2501c73fa325a7cf4786178191a5e38d3022d6c1d6a6eb5653b5ed2522c494c

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 3634e36b0c77e1cfa16e761f060b2b2b8eecbe3cff6c628d315a58d936a86ed5
MD5 e8fbec4c0867ae5ff529569458688b3f
BLAKE2b-256 75abdc31ab21b1357e7b343545248ddb6d4f103b9f632e2c1d537898114d5f06

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 201804e7e9a9c411f401f37de0d5d730f4fa3c869abecf642d5cd2bdee32c16c
MD5 44788de520b6d3084e2c645a996342a0
BLAKE2b-256 682e8a45ec24552b3dca41bcf7e7e3517256f065a78886bf19d2e0b0f5039bf1

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 13b7a78b381b57d89aeb701848d317e106633bdc61b78f6c101847671820f65b
MD5 a72f13c85b7562f2dae1745875fb9a36
BLAKE2b-256 adb075ff1c6f3b4a042c3c3226c96f757d5f84e7d2e38ec21b0bd3ed4adf0421

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e9366edb7aa69eb08f5d83a0e0400de262fd6c7b8b30930fa432573261d58dbe
MD5 d23214a9cf6aeb91d838d86ea5d941e6
BLAKE2b-256 2230bb5966719759ba85c67612f969ae411cfef6d533b730ab6e435e5c74d2ef

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 691e29035470cd8531fc5de344db60a184e84aed4fc12889a41b5f5530d0f179
MD5 c2eb3e4a1a82cc98d287e17223bdf02e
BLAKE2b-256 d4b078599a8bd43f7597a94e4adbcf7b1b85321f674d23007d4fd399ef66474f

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ac87cb64862f94aa8015fa0df4dc1b7b3d523b75867006597d6961bf66549c95
MD5 81870116daeb250e588be24c727c1436
BLAKE2b-256 c015fc7599ee55a68f139aa0c257866fce4f03c63c6c300fa0111dea1eb3a8e4

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bb0768e84f54f92dc0d637085810bc4fadb512ddc0f3596827d6c8c38c2841b3
MD5 339fa4ba1b48319b05f0bdc778b2587b
BLAKE2b-256 3739cd2d77db76594a02a3feff470fe6da8e9c93aa3f5b6066e4bc9baeb6f47b

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2f73ef54bbf575c682cd26a3064e7aa62fda1f46ae136c018737aa6273f17fb2
MD5 a79591530b740f62ed80082b867213b5
BLAKE2b-256 e8cd17bbe4293e1d3b25870abf1e01e47f5c001ed82eeabdbb72110f8de433ed

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c7d29788a4273f2d2c2b33f0f9db23ad0aada3f1ae92152de1f87f74e9924d3d
MD5 f70aa0ff14717e41da1ed87352de63cc
BLAKE2b-256 1dfb049accc37647fa8c69e1f1858d1518d1320c84a61981927deb72018b7e42

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 83dfd1760767f52202d418eb274934be78bc80fabd2f8d9924338f88e5c3a769
MD5 acf97983947e1737be6771cabe29897b
BLAKE2b-256 7905a1d93d1b4d4fcf9b5034b5661cfee816e111db7fd015285d289d7b1b17d1

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 cd051b644ef98a70d56bd20fbde2ee649a30e0ea1ca461cd0836ba2b6a4110e0
MD5 c1c2d5050f64b7eb6a973d326daf6fce
BLAKE2b-256 988e26749ab3ed2fa30735ed20bdf2830f982fc64672692f9e38c836f42b3498

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 06754f510f99b2b672180a626567ea7032ff1cd7b0e8edea0d37b0a33653d8d1
MD5 783b78de6831da540b9ea7bfcd431bdd
BLAKE2b-256 251749d587ade32eeb2cb6af4e364e69e4f6e311a34b27f51021c3f29c86360b

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 358d2abf6d617697ad9f387a845ab48153a737faf912e538f7658bb5990a3d88
MD5 41b68e9a0d95e5e0943a69aa5cdf9fce
BLAKE2b-256 8c1ad41d0ef70f14d2608ff16059802226cc19dc1848f7b9915a5274bbc6f71f

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 80d39a07d710e210b7f821d2110388f81e83c12483251dad5078abacf5d5af3a
MD5 4045a0c016c4b1d9f26ccbb2639d440a
BLAKE2b-256 0c8e4f547397d513e2bccdbafc073250ed1c7ae1df1a52c8e9a8996e08bd39ae

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b6aa6293230f67fb4a4dea0316f9091038ae8406cdf776ee9c2b67fbf9ed2b3b
MD5 c23019bfc6178e0cb23f9af21ff50fec
BLAKE2b-256 7bef0a107e4f7dba78523763329f5cfb750fc0bc696cfb24b5deb22b684e1449

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1f2aceaf233c182ca12a5c20bcefbc2341d3f5b4845dbfc893cd943311556bfd
MD5 d437cc6fbb63765bfeee87490888850d
BLAKE2b-256 49632389de40e700011e0470105e04d9e8c99f159cf2da507a4b44f831ad62eb

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 30783a8e27bb4b169412c2c678c322ad864ace58223c78f791c31f3a81613bfb
MD5 cac980f1c33cbecc147ae0315cc61b8f
BLAKE2b-256 d9628c90b991a85d5fa55b31d9fd528ce1cd485b74ee496ad0dbc75bcfec4134

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c6f8cb1396da0f9073276725f4ced4eccf539f9259f2c22d4b7a8727eec5f97f
MD5 55519e000739c0b225072f57ecb91f76
BLAKE2b-256 401a79e701bbb0927cde4c2437d91abb1c23390e22c551321697a5b6a93ee4e5

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 284ee617ebf361c11737c617ec49cc9f1bd051d8b831fe0329f7ec274d4b0a49
MD5 a6dc530303f6d3e3a3766e2940dd2852
BLAKE2b-256 bb5acb6baac5ccc4f260c49b4d3cc2e31e9f19fd32863592a04e2bb6afa7db54

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 19b26620c26e4d5f3c618d0a24c2a91cac239ca70dd433d5d11a870241fbad69
MD5 4ecfde55042ff03e4e2f71a0a69a246b
BLAKE2b-256 ea35e8fd0b3150050f3f078767c178ea1d07ffc688b8efe222af3d401c87fa0d

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: ferropdf-0.1.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for ferropdf-0.1.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 d0cd0c291857fe8daacf387b8bf82d1cf6590d1ae2baab273314fd3bb0f37f22
MD5 3fc8ee450c465b31b7f6b33fa3ca1a20
BLAKE2b-256 ddb8c7cf40c96c5300965b39d8f023789079afb42bb7445901818731553a9e96

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5f05693e48d735e700ab7e8a54ed024f97ed0263c6ab8dc5299b4201d3665fc6
MD5 54b32c387cc3df9d970711b1cebd2322
BLAKE2b-256 f2816ccbe6ec1c39261c2bc111039db48a71efc1116b397f38660b8320a2b7b3

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 05fec02aaeb620b67249eb4e3be5c454bb5163566ab9e741d2ce7d74a589cc91
MD5 43daa62daabf4bd832d88fbdd1c981ee
BLAKE2b-256 0ce16580433ad18b2dd74d1a37f02aba9f54f94d64971a745a7f8f60379cbb39

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 78f1fcbae7aa23c1621e3169a72866121de4fe20a4c1ed17693271635f99ca8b
MD5 0812b4e1fd2c2b5dfc404c99a51805d9
BLAKE2b-256 f2516655d560ba8a66c7404870dec8c80c3306f9b8c0ec0e5aaba2fbbc7e9f40

See more details on using hashes here.

File details

Details for the file ferropdf-0.1.0-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ferropdf-0.1.0-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 caf7aeb4029741c883034e44d754bc6ec018182dc4c80541359903df1899003e
MD5 05e39f80a07ed79974d38e4ee5108e1c
BLAKE2b-256 671946a1018fbbede5a93c8bea5784394d49e0631b21a68df2e262fbeda461a4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page