lopdf vs pdfium in Rust — Why I Chose the Smaller One

All tests run on an 8-year-old MacBook Air.

When I started building a PDF tool in Rust, the first decision was which PDF library to use.

The two main options: lopdf and pdfium-render. I chose lopdf. Here’s why — and where it hurts.

The o…


This content originally appeared on DEV Community and was authored by hiyoyo

All tests run on an 8-year-old MacBook Air.

When I started building a PDF tool in Rust, the first decision was which PDF library to use.

The two main options: lopdf and pdfium-render. I chose lopdf. Here's why — and where it hurts.

The options

pdfium-render

  • Bindings to Google's PDFium (the engine inside Chrome)
  • Excellent rendering quality
  • Large binary (~10MB added to app size)
  • Requires bundling the PDFium shared library
  • Great for viewing, not great for manipulation

lopdf

  • Pure Rust PDF manipulation library
  • No external dependencies
  • Small binary footprint
  • Full access to the raw object tree
  • Rendering quality: you're on your own

Why lopdf won

I'm building a tool, not a viewer.

lopdf gives direct access to every object in the PDF — dictionaries, streams, cross-reference tables, the works. For operations like metadata stripping, Bates numbering, stealth watermarking, and structural rebuilding, this low-level access is exactly what you need.

pdfium would abstract all of that away.

// lopdf: direct object manipulation
doc.trailer.remove(b"Info");

for (_, object) in doc.objects.iter_mut() {
    if let Ok(dict) = object.as_dict_mut() {
        dict.remove(b"Author");
    }
}

You can't do this with pdfium bindings. It doesn't expose the raw object tree.

Where lopdf hurts

Rendering. lopdf can't render pages to images. Zero.

My workaround: use macOS PDFKit (via a Swift sidecar) for all rendering, lopdf for all manipulation. Two engines, clear separation of responsibilities.

Complex PDF features. Heavily encrypted PDFs, some form types, certain font encodings — lopdf struggles. For a general-purpose viewer this would be a dealbreaker. For a tool focused on manipulation, it's acceptable.

The verdict

If you're building a PDF viewer: pdfium-render.
If you're building a PDF tool that manipulates document structure: lopdf.

They're solving different problems.

Hiyoko PDF Vault → https://hiyokoko.gumroad.com/l/HiyokoPDFVault
X → @hiyoyok


This content originally appeared on DEV Community and was authored by hiyoyo


Print Share Comment Cite Upload Translate Updates
APA

hiyoyo | Sciencx (2026-04-24T08:47:10+00:00) lopdf vs pdfium in Rust — Why I Chose the Smaller One. Retrieved from https://www.scien.cx/2026/04/24/lopdf-vs-pdfium-in-rust-why-i-chose-the-smaller-one/

MLA
" » lopdf vs pdfium in Rust — Why I Chose the Smaller One." hiyoyo | Sciencx - Friday April 24, 2026, https://www.scien.cx/2026/04/24/lopdf-vs-pdfium-in-rust-why-i-chose-the-smaller-one/
HARVARD
hiyoyo | Sciencx Friday April 24, 2026 » lopdf vs pdfium in Rust — Why I Chose the Smaller One., viewed ,<https://www.scien.cx/2026/04/24/lopdf-vs-pdfium-in-rust-why-i-chose-the-smaller-one/>
VANCOUVER
hiyoyo | Sciencx - » lopdf vs pdfium in Rust — Why I Chose the Smaller One. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2026/04/24/lopdf-vs-pdfium-in-rust-why-i-chose-the-smaller-one/
CHICAGO
" » lopdf vs pdfium in Rust — Why I Chose the Smaller One." hiyoyo | Sciencx - Accessed . https://www.scien.cx/2026/04/24/lopdf-vs-pdfium-in-rust-why-i-chose-the-smaller-one/
IEEE
" » lopdf vs pdfium in Rust — Why I Chose the Smaller One." hiyoyo | Sciencx [Online]. Available: https://www.scien.cx/2026/04/24/lopdf-vs-pdfium-in-rust-why-i-chose-the-smaller-one/. [Accessed: ]
rf:citation
» lopdf vs pdfium in Rust — Why I Chose the Smaller One | hiyoyo | Sciencx | https://www.scien.cx/2026/04/24/lopdf-vs-pdfium-in-rust-why-i-chose-the-smaller-one/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.