Skip to content

feat: add ignorePermissions flag to removeProtection() - #100

Merged
Mythie merged 2 commits into
mainfrom
feat/remove-protection
Sep 25, 2026
Merged

Mythie merged 2 commits into
mainfrom
feat/remove-protection

Conversation

@Mythie

@Mythie Mythie commented Sep 25, 2026

Copy link
Copy Markdown
Contributor

No description provided.

@vercel

vercel Bot commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
core Ready Ready Preview Sep 25, 2026 6:39am UTC

@github-actions

github-actions Bot commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Benchmark Results

Comparison

Load PDF

Benchmark Mean p99 RME Samples
libpdf 18.79ms 20.88ms ±1.8% 27
pdf-lib 221.73ms 224.91ms ±0.7% 10
@cantoo/pdf-lib 217.37ms 228.48ms ±1.4% 10

Create blank PDF

Benchmark Mean p99 RME Samples
libpdf 68μs 154μs ±2.1% 7371
pdf-lib 364μs 1.45ms ±2.8% 1376
@cantoo/pdf-lib 455μs 1.80ms ±3.0% 1099

Add 10 pages

Benchmark Mean p99 RME Samples
libpdf 126μs 219μs ±1.3% 3965
pdf-lib 452μs 2.03ms ±3.6% 1107
@cantoo/pdf-lib 474μs 2.76ms ±4.3% 1055

Draw 50 rectangles

Benchmark Mean p99 RME Samples
libpdf 385μs 1.14ms ±2.0% 1299
pdf-lib 1.69ms 9.87ms ±9.2% 296
@cantoo/pdf-lib 1.63ms 5.04ms ±5.9% 307

Load and save PDF

Benchmark Mean p99 RME Samples
libpdf 19.12ms 23.75ms ±3.1% 27
pdf-lib 325.97ms 341.11ms ±1.3% 10
@cantoo/pdf-lib 588.07ms 607.02ms ±1.4% 10

Load, modify, and save PDF

Benchmark Mean p99 RME Samples
libpdf 347.70ms 362.66ms ±1.3% 10
pdf-lib 316.90ms 331.50ms ±1.6% 10
@cantoo/pdf-lib 580.48ms 595.52ms ±1.7% 10

Extract single page from 100-page PDF

Benchmark Mean p99 RME Samples
libpdf 3.70ms 4.50ms ±1.0% 136
pdf-lib 9.16ms 11.28ms ±2.1% 55
@cantoo/pdf-lib 9.38ms 10.94ms ±1.9% 54

Split 100-page PDF into single-page PDFs

Benchmark Mean p99 RME Samples
libpdf 40.75ms 44.49ms ±2.3% 13
pdf-lib 72.79ms 77.04ms ±4.1% 7
@cantoo/pdf-lib 81.94ms 106.78ms ±12.7% 7

Split 2000-page PDF into single-page PDFs (0.9MB)

Benchmark Mean p99 RME Samples
libpdf 775.45ms 775.45ms ±0.0% 1
pdf-lib 1.35s 1.35s ±0.0% 1
@cantoo/pdf-lib 1.46s 1.46s ±0.0% 1

Copy 10 pages between documents

Benchmark Mean p99 RME Samples
libpdf 4.80ms 5.94ms ±1.3% 105
pdf-lib 11.68ms 13.02ms ±1.4% 43
@cantoo/pdf-lib 13.19ms 14.50ms ±1.6% 38

Merge 2 x 100-page PDFs

Benchmark Mean p99 RME Samples
libpdf 16.37ms 17.26ms ±1.1% 31
pdf-lib 52.82ms 55.84ms ±1.8% 10
@cantoo/pdf-lib 63.57ms 65.91ms ±1.3% 8

Fill FINTRAC form fields

Benchmark Mean p99 RME Samples
libpdf 21.12ms 24.78ms ±2.9% 24
pdf-lib 27.64ms 37.87ms ±4.7% 19
@cantoo/pdf-lib 27.55ms 35.93ms ±4.4% 19

Fill and flatten FINTRAC form

Benchmark Mean p99 RME Samples
libpdf 17.51ms 22.74ms ±3.1% 29
pdf-lib FAILED - - 0
@cantoo/pdf-lib 30.72ms 44.62ms ±6.4% 17
Copying

Copy pages between documents

Benchmark Mean p99 RME Samples
copy 1 page 1.13ms 2.12ms ±2.6% 442
copy 10 pages from 100-page PDF 4.73ms 7.62ms ±2.3% 106
copy all 100 pages 7.97ms 8.80ms ±1.0% 63

Duplicate pages within same document

Benchmark Mean p99 RME Samples
duplicate page 0 1.02ms 1.49ms ±0.8% 491
duplicate all pages (double the document) 1.04ms 1.49ms ±0.8% 484

Merge PDFs

Benchmark Mean p99 RME Samples
merge 2 small PDFs 1.56ms 2.01ms ±1.0% 320
merge 10 small PDFs 8.35ms 13.13ms ±2.8% 60
merge 2 x 100-page PDFs 15.01ms 15.85ms ±0.9% 34
Drawing

benchmarks/drawing.bench.ts

Benchmark Mean p99 RME Samples
draw 100 rectangles 635μs 1.39ms ±1.9% 788
draw 100 circles 945μs 1.87ms ±1.7% 530
draw 100 lines 577μs 1.19ms ±1.3% 867
draw 100 text lines (standard font) 1.64ms 2.97ms ±1.8% 305
create 10 pages with mixed content 1.49ms 2.60ms ±1.9% 336
Forms

benchmarks/forms.bench.ts

Benchmark Mean p99 RME Samples
get form fields 3.27ms 5.98ms ±3.2% 153
fill text fields 13.81ms 24.20ms ±6.0% 37
read field values 2.97ms 5.10ms ±2.3% 169
flatten form 8.33ms 10.93ms ±1.5% 61
Loading

benchmarks/loading.bench.ts

Benchmark Mean p99 RME Samples
load small PDF (888B) 65μs 202μs ±1.6% 7656
load medium PDF (19KB) 93μs 133μs ±0.6% 5385
load form PDF (116KB) 1.27ms 2.35ms ±1.4% 395
load heavy PDF (2.0MB) 19.00ms 20.70ms ±1.4% 27
Saving

benchmarks/saving.bench.ts

Benchmark Mean p99 RME Samples
save unmodified (19KB) 115μs 340μs ±1.7% 4356
save with modifications (19KB) 845μs 1.56ms ±1.5% 592
incremental save (19KB) 179μs 369μs ±1.1% 2794
save heavy PDF (2.0MB) 18.32ms 19.96ms ±1.2% 28
incremental save heavy PDF (2.0MB) 19.28ms 22.61ms ±2.0% 26
Splitting

Extract single page

Benchmark Mean p99 RME Samples
extractPages (1 page from small PDF) 1.13ms 2.20ms ±2.6% 444
extractPages (1 page from 100-page PDF) 3.59ms 4.12ms ±0.8% 140
extractPages (1 page from 2000-page PDF) 56.79ms 64.10ms ±3.3% 10

Split into single-page PDFs

Benchmark Mean p99 RME Samples
split 100-page PDF (0.1MB) 40.23ms 43.00ms ±1.6% 13
split 2000-page PDF (0.9MB) 721.24ms 721.24ms ±0.0% 1

Batch page extraction

Benchmark Mean p99 RME Samples
extract first 10 pages from 2000-page PDF 57.58ms 59.56ms ±1.3% 9
extract first 100 pages from 2000-page PDF 61.08ms 62.75ms ±1.4% 9
extract every 10th page from 2000-page PDF (200 pages) 67.60ms 69.64ms ±1.5% 8
Environment
  • Runner: Linux (X64)
  • Runtime: Bun 1.4.2
  • Libraries: @libpdf/core 0.5.0 (this repo), pdf-lib 1.17.1, @cantoo/pdf-lib 2.9.1

Results are machine-dependent.

@Mythie
Mythie merged commit 9239e2b into main Sep 25, 2026
6 checks passed

This branch was successfully deployed

1 active deployment
Preview — 642a89aa Deployed Sep 25, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant