pdf_manipulator 4.1.0 copy "pdf_manipulator: ^4.1.0" to clipboard
pdf_manipulator: ^4.1.0 copied to clipboard

Cross-platform PDF toolkit for Flutter. Merge, split, render, extract, search, sign, encrypt, convert, build from scratch. Rust engine, off the main thread.

Changelog #

4.1.0 #

  • Added scan-dirs: extra directories for keep: auto to scan, on top of your app's lib/ and bin/. Code living somewhere else — a tools/ folder, a sibling package in a monorepo — was invisible to the scan, so a capability you really call could be trimmed away. Now you point at it: scan-dirs: [tools, packages/shared/lib], paths relative to your app. It only applies where there is a scan to widen (keep: auto, and not detector: record-use), and a directory that isn't there keeps the full binary rather than quietly scanning less than you asked for.
  • Verify your app after upgrading: keep: auto now actually trims the native engine, so a build that had been silently shipping every capability gets a smaller one. If anything is missing, state it yourself with keep: [render, …].
  • Fixed setup ignoring your config when run from a subfolder of your project. It read the config and scanned for source relative to wherever you were standing, so from anywhere but the app root it found no pubspec, silently read that as "nothing configured", and shipped the full web engine. Both lanes now locate your app the same way — from a path inside its own .dart_tool/, which neither the working directory nor where you invoke the command can move.
  • Fixed keep: auto keeping every capability on native no matter what your app used. The build hook read its own working directory as your app's source, but hooks are started inside the package they belong to — so the scan matched pdf_manipulator's own implementations and concluded you used all of them, every time, while reporting success. It now derives your app from the hook's output path. Web was never affected: you run setup from your own project, so its scan was always looking in the right place.
  • Fixed the native keep decision being cached for good. The hook registered none of your source as a build dependency, so once it had decided it never looked again — add a sign() call to an app that had already been built and the engine kept compiling without signature support. The source the scan reads is now a hook dependency, so the decision re-evaluates when your app changes.
Commits since v4.0.0 (5)
  • 1b5edb1 stamp: asset hashes for v4.1.0
  • bbf0ff8 release: v4.1.0
  • 00054ef release: promote dev → prod (v4.1.0) (#210)
  • bd94ef4 Merge branch 'prod' into dev
  • 65f4233 feat: scan-dirs, and make keep: auto actually scan your app (#209)

4.0.0 #

  • Breaking: the engine is configured with three flat keys under hooks: user_defines: pdf_manipulator:keep (which capabilities compile: auto to scan your source, [render, …] for an exact set, or omit for everything), detector (how auto detects, only valid with keep: auto), and build (how they compile). Migrating from 3.x: trim: autokeep: auto, trim: {keep: [render, …]}keep: [render, …], trim-detector: Xdetector: X, and the web-only setup --trim flag is gone — put your choice in pubspec and re-run flutter pub run pdf_manipulator:setup (web now reads the same block native does). Invalid configs fail the build loudly, never silently: an unknown key, a bad value, or a detector set without keep: auto all stop with a clear message (PR #185)
  • Added build: in that same block — pick HOW the engine compiles: speed (default, prebuilt), size (smaller binary, opt-level z, a little slower), or debug (keeps symbols so a native engine crash points to a file and line). size and debug compile from source and need Rust; works for web and native (PR #185)
  • Changed the prebuilt-binary download to retry transient failures and resume interrupted transfers over HTTP Range, so a flaky network on a large asset (e.g. the ~180 MB iOS static library) no longer forces a slow from-source compile on a single blip (PR #185)
  • Fixed a cryptic failed to load manifest ... feature edition2024 is required cargo error when the engine compiles from source (iOS device builds, git dependencies, or any download-miss) on an older Rust toolchain — the build now checks the required Rust version first and stops with a clear message naming the exact version and the rustup command to install it (#183 reported by @mrhazelh, PR #185)
Commits since v3.0.0 (19)
  • 56ab37f stamp: asset hashes for v4.0.0
  • 29d564f release: v4.0.0
  • c4f6afc release: promote dev → prod (#208)
  • b624f54 Merge branch 'prod' into dev
  • 7502a31 feat!: engine config → keep / detector / build; one compile driver; Rust pin+gate (#183); resilient downloads (#185)
  • cca99f0 ci: bump all action refs (workflows + composites) (#207)
  • 5e9c33f chore: refresh lockfiles (#205)
  • 551491b chore: bump Flutter SDK (#204)
  • b983534 ci: one owner for all action refs (whuppi/ci v2.4.0), Dependabot = pub only (#206)
  • 8927f03 ci: revert Renovate — back to dependabot + upgrade-check (#201)
  • c25c058 ci: Renovate — no hourly PR limit for the go-live backlog (#194)
  • e5c7afe ci: Renovate — open bump PRs immediately (drop not-pending) (#191)
  • 37af265 ci: Renovate — disable commit statuses (unblock PR creation) (#189)
  • d52959c ci: go live on Renovate — remove dependabot + upgrade-check shared job (#188)
  • bd510b6 ci: tune Renovate config (pinDigests + schedules) (#187)
  • a474ca5 ci: add self-hosted Renovate (replaces dependabot + sweeps) (#186)
  • da98a3e chore: bump the deps group with 2 updates (#181)
  • ab9217b chore: refresh lockfiles (#184)
  • 2364765 chore: bump Flutter SDK (#182)

3.0.0 #

  • Breaking: flattening CJK or emoji form values no longer uses a bundled font (it added 4.4 MB to every install). Register one once: await pdf.registerFallbackFont(PdfFallbackFontKind.cjk, fontBytes) (.emoji for emoji). Without one the value is still saved correctly — only the baked-in look falls back to the field's own font.
  • Breaking (only if you took the retracted 2.2.0): the trim-detector value analyzer is now scan → change it or delete the line — it is the default (PR #172)
  • Engine updated — web: re-run flutter pub run pdf_manipulator:setup --force web (native updates itself)
  • Added trim — keep only the features your app uses (#167). Put trim: auto under hooks: user_defines: pdf_manipulator: in your app pubspec, or choose yourself with trim: {keep: [render, signatures]}; on web also run flutter pub run pdf_manipulator:setup --trim. Needs Rust — the engine compiles once on your machine and is cached. Wrong or missing pieces fail with a clear message, never a broken app.
  • Added Pdf.registerFallbackFont(PdfFallbackFontKind, Uint8List).
  • Changed the default binary: dead engine surfaces, unused barcode support, and the embedded fonts are gone — native 28.7 MB → 21.1 MB, gzipped web download 11.3 MB → 7.3 MB. No action needed.
  • Changed the web build to compile its own wasm-bindgen + wasm-opt inside the engine's cargo workspace, version-locked by the engine's Cargo.lockwasm-bindgen-cli, binaryen, and jq are no longer needed, Rust is the only requirement on every platform, and the exact-version rejection is gone with the tools (#177 reported by @DarkWingMcQuack, PR #178)
  • Fixed the package forcing an old analyzer version onto your app, which blocked current freezed / json_serializable and friends. The analyzer dependency is gone: trim: auto uses a dependency-free source scan. It can only keep slightly more than you use, never less — state trim: {keep: [...]} yourself for the exact minimum (#171 reported by @DarkWingMcQuack, PR #172)
  • Fixed the package archive missing a build file (the engine's Cargo.lock), which broke trim and every compile-from-source path with "No such file or directory" (#171 reported by @DarkWingMcQuack, PR #172)
  • Fixed the web compile error message telling you to install wasm-pack — it is not used. The build now points at the tool it actually misses, with the exact install command (PR #172)
  • Fixed trim: auto counting member names inside comments as usage — a doc line saying "render them" kept the render capability. The scan now ignores comments, and prints where each kept member was matched, e.g. render (lib/preview.dart:12) (#175 reported by @DarkWingMcQuack, PR #178)
  • Fixed source builds failing with "rustup: command not found" on Rust installs not managed by rustup (Homebrew, distro packages) — the build now asks rustc itself whether a target is installed and uses rustup only as the fallback (#176 reported by @DarkWingMcQuack, PR #178)
Commits since v2.2.0 (9)
  • 2e710e6 stamp: asset hashes for v3.0.0
  • 705ce19 release: v3.0.0
  • eeb322d chore: promote dev to prod (3.0.0) (#179)
  • 9fadb24 Merge branch 'prod' into dev
  • afd3b45 fix: Rust-only trim toolchain — comment-aware scan, rustc target probe, workspace-locked wasm tools (#178)
  • 7322e8d chore: refresh lockfiles (#174)
  • e423aad ci: run analyze-floor in make check and guard battery-runner completeness
  • 4066afa docs(roadmap): record_use ^0.6.0 pin reason + bump trigger (#173)
  • 23fe620 fix: ship vendor Cargo.lock in the pub tarball + tarball gate (#171) (#172)

2.2.0 #

Retracted on pub.dev: the published archive was missing a build file (the engine's Cargo.lock), breaking trim and compile-from-source installs. Superseded by 3.0.0, which consolidates everything here.

  • Breaking: flattening CJK or emoji form values no longer uses a bundled font (it added 4.4 MB to every install). Register one once: await pdf.registerFallbackFont(PdfFallbackFontKind.cjk, fontBytes) (.emoji for emoji). Without one the value is still saved correctly — only the baked-in look falls back to the field's own font.
  • Engine updated — web: re-run flutter pub run pdf_manipulator:setup --force web (native updates itself)
  • Added trim — keep only the features your app uses (#167). Put trim: auto under hooks: user_defines: pdf_manipulator: in your app pubspec, or choose yourself with trim: {keep: [render, signatures]}; on web also run flutter pub run pdf_manipulator:setup --trim. Needs Rust — the engine compiles once on your machine and is cached. Wrong or missing pieces fail with a clear message, never a broken app.
  • Added Pdf.registerFallbackFont(PdfFallbackFontKind, Uint8List).
  • Changed the default binary: dead engine surfaces, unused barcode support, and the embedded fonts are gone — native 28.7 MB → 21.1 MB, gzipped web download 11.3 MB → 7.2 MB. No action needed.
Commits since v2.1.4 (8)
  • c2d8163 stamp: asset hashes for v2.2.0
  • 1a51770 release: v2.2.0
  • 2002f69 chore: promote dev to prod (2.2.0) (#170)
  • 6ce511d Merge branch 'prod' into dev
  • f15167e chore: bump pinned versions (#168)
  • ff1309d feat: trim — ship only the ops the app calls (#167) (#169)
  • 41155eb ci: bump dorny/paths-filter from 4.0.1 to 4.0.2 in the actions group (#165)
  • 7cde443 chore: refresh lockfiles (#166)

2.1.4 #

  • Engine updated — web: re-run flutter pub run pdf_manipulator:setup --force web (native updates itself)
  • Fixed flattenForms dropping a field's value when the fill and the flatten happen in separate editor sessions — a reopened editor carries no in-session modified-field map, so the flattener now regenerates the appearance from the persisted /V (saved alongside /NeedAppearances) instead of baking the stale placeholder (#161 reported by @DarkWingMcQuack, PR #162)
  • Fixed addImageStamp erasing a page's existing form widgets when the page references its annotations through an indirect /Annots reference rather than a direct array (#161 reported by @DarkWingMcQuack, PR #162)
  • Fixed a reopened filled form rendering blank where its value should appear — the renderer now regenerates a widget's appearance from /V when the AcroForm sets /NeedAppearances, matching the flattener (PR #162)
Commits since v2.1.3 (8)
  • b7fdb35 stamp: asset hashes for v2.1.4
  • 260091e release: v2.1.4
  • 14cd751 chore: promote dev to prod (2.1.4) (#164)
  • cefb01f Merge branch 'prod' into dev
  • 0f751b1 docs: 2.1.4 — split-session flatten, indirect /Annots stamp, NeedAppearances render (#163)
  • 0245950 fix: #161 split-session flatten + indirect /Annots stamp (bump pdf_oxide v0.3.73 / office_oxide v0.1.3) (#162)
  • 7dd115d chore: refresh lockfiles (#160)
  • 6e7e8fa chore: bump Flutter SDK (#159)

2.1.3 #

  • Engine updated — web: re-run flutter pub run pdf_manipulator:setup --force web (native updates itself)
  • Fixed setFormFieldValue reporting field-not-found on forms whose field names are stored as raw UTF-8 (LibreOffice-class producers) — one spec-tolerant text-string decoder now handles UTF-16BE/LE, UTF-8 with and without BOM, and PDFDocEncoding across every read (#155, PR #156)
  • Fixed flattenForms baking mojibake for values outside ASCII (ßß or ) — values decode per ISO 32000-1 §7.9.2.2 and appearance text is written one WinAnsi byte per character instead of UTF-8 (#155, PR #156)
  • Fixed fill → flatten silently dropping the value on widgets without an appearance stream when the field name is non-ASCII — the flattener and the form extractor now agree on how names decode (#155, PR #156)
  • Fixed flattening CJK and emoji values drawing nothing — the bundled fallback font now ships in both native and web builds and is embedded when the field's own font cannot render the text (#155, PR #156)
  • Fixed document metadata (getTitle and friends) mangling non-ASCII on read, and metadata writes now encode per spec so other readers see the right text (#155, PR #156)
Commits since v2.1.2 (7)
  • 6aa4e45 stamp: asset hashes for v2.1.3
  • 99c6e61 release: v2.1.3
  • cce6645 chore: promote dev to prod (2.1.3) (#158)
  • efa47f2 Merge branch 'prod' into dev
  • 9ed0c7c docs: 2.1.3 — form text-string encoding fixes (#157)
  • 10dee1f chore: bump Flutter SDK (#154)
  • fb5ee1f fix: form fill/flatten non-ASCII text handling (ß, umlauts, CJK) (#156)

2.1.2 #

  • Engine updated — web: re-run flutter pub run pdf_manipulator:setup --force web (native updates itself)
  • Fixed a Flutter Web WASM (dart2wasm) compile failure — the _post switch over Object? was non-exhaustive under dart2wasm (dart2js treats JSAny as a catch-all, dart2wasm doesn't), now converted with jsify() (#145 reported by @DarkWingMcQuack, PR #146)
  • Fixed pub.dev not advertising Flutter Web support — the web runtime now resolves to a stub default that pana can analyze, so the package shows web (dart2js) support (PR #133)
Commits since v2.1.1 (31)
  • 99d9159 stamp: asset hashes for v2.1.2
  • 398d566 release: v2.1.2
  • 9b21629 chore: promote dev to prod (2.1.2) (#153)
  • 4f61ed1 Merge branch 'prod' into dev
  • ec338d8 ci: bump whuppi/ci to v2.0.4 (#151)
  • 8ae80af ci: bump whuppi/ci to v2.0.3 (#150)
  • 6c267f8 ci: bump whuppi/ci to v2.0.2 (#149)
  • 711055d ci: bump whuppi/ci to v2.0.1 (#148)
  • f8fdf61 docs: 2.1.2 — dart2wasm web fix + web platform on pub.dev (#147)
  • 7c0e15a fix: dart2wasm web build; adopt whuppi/ci v2.0.0 dual-compiler gate (#146)
  • 6fc0ec3 chore: adopt whuppi/ci v1.0.8 (#144)
  • f724639 build: adopt the shared platforms gate + shell lint (#142)
  • f237ade ci: align dependabot/labels/upgrade-body with the workspace shape (#141)
  • 6fe4598 chore: bump pinned versions (#139)
  • f05ed54 build: shared strict analyze gate + whuppi/ci pin bump to v1.0.6 (#140)
  • a98a69f docs: fix stale branch-protection recipe (#138)
  • aa20ef0 ci: bump whuppi/ci shared refs to v1.0.4 (#137)
  • 1614841 ci: migrate onto the shared whuppi/ci@v1.0.1 (#136)
  • 79dc1f8 chore: bump pinned versions (#134)
  • ffb3048 fix: show web platform support on pub.dev (stub-default seam) + pana platform gate (#133)
  • ed305ea chore: bump pinned versions (#130)
  • a82d751 chore: refresh lockfiles (#131)
  • 1ccf266 fix(ci): resolve fvm on windows via native fvm.exe, not a .bat shim (#132)
  • 657804e chore: promote dev to prod (#129)
  • 9af712c Merge branch 'prod' into dev
  • af178e9 fix(ci): refresh the example lockfile with flutter, not dart (#128)
  • 9a8f5d0 chore: bump pinned versions (#127)
  • 21368ff chore: refresh lockfiles (#125)
  • cce4135 ci: verify the dependency floor compiles (analyze on oldest deps) (#126)
  • 464f06c chore: bump pinned versions (#124)
  • 0a58c7b ci: gate .gitmodules to the owner (#123)

2.1.1 #

  • Fixed the README banner not rendering on pub.dev — the <picture> element is flattened to a plain image in the published package (PR #111)
Commits since v2.1.0 (14)
  • 655a804 stamp: asset hashes for v2.1.1
  • ae38450 release: v2.1.1
  • 7295a0e chore: promote dev to prod (2.1.1) (#122)
  • e9c3bd5 Merge branch 'prod' into dev
  • 3ac56cb ci: unblock the release pipeline + supply-chain & workflow hardening (#121)
  • 8c63ea2 chore: promote dev to prod (2.1.1) (#119)
  • cd4f499 Merge branch 'prod' into dev
  • c9ef5d0 fix(ci): re-supply git push auth in release.sh (#120)
  • 2724150 docs: add 2.1.1 changelog entry for the README fix (#118)
  • 16d2241 ci: declare repo labels as code with a sync workflow (#117)
  • dc1037d ci: harden CI to zizmor-auditor zero with a supply-chain SSOT (#113)
  • 441ec72 ci: bump actions/stale from 9 to 10 in the actions group (#114)
  • 2dde3f0 ci: auto-close resolved issues with an opt-out guard (#112)
  • 3dbae4e ci: flatten README banner for the pub.dev tarball (#111)

2.1.0 #

  • Engine updated — web: re-run flutter pub run pdf_manipulator:setup --force web (native updates itself)
  • Added document producer and creation-date metadata — PdfEditor.setProducer() / getProducer() and setCreationDate() / getCreationDate() (raw PDF date strings, e.g. D:20240101120000Z), plus PdfDoc.producer, PdfDoc.creator, and PdfDoc.creationDate read on open
  • Fixed addImageStamp rendering a transparent-background PNG as a solid black box — the alpha channel now ships as a grayscale /SMask and the PNG predictor params are preserved, so transparent areas reveal the page instead of painting black (#103 reported by @DarkWingMcQuack, PR #104)
  • Fixed the RenderedPage.data doc — render() returns PNG-encoded bytes (decode to read pixels), not raw RGBA (PR #104)
Commits since v2.0.1 (11)
  • 5f06717 stamp: asset hashes for v2.1.0
  • cefb51e release: v2.1.0
  • f8c7bf1 chore: promote dev to prod (#109)
  • 4bb7149 ci: add changelog version check (#110)
  • 779495f Merge branch 'prod' into dev
  • 2b5c35e feat: add producer and creation-date document metadata (#108)
  • cc837da docs: changelog 2.0.2 — addImageStamp PNG transparency fix (#107)
  • 5392e95 ci: bump actions/checkout from 6 to 7 in the actions group across 1 directory (#106)
  • eb15b4d fix: addImageStamp preserves PNG transparency (no black box) (#104)
  • 271c1d5 ci: vendored-engine cargo tests + consistent job names (#105)
  • 0d623bf ci: bump actions/labeler from 5 to 6 in the actions group (#102)

2.0.1 #

Docs-only — no code or API changes.

  • README and every guide (architecture, capabilities, migration, updating, contributing) rewritten, restructured, and verified against the source
Commits since v2.0.0 (6)
  • 9afea02 stamp: asset hashes for v2.0.1
  • a393f2b release: v2.0.1
  • 15ea53a chore: promote dev to prod (2.0.1) (#101)
  • 8a41292 Merge branch 'prod' into dev
  • 9786314 feat: pdf_manipulator/io.dart + README & docs polish (#100)
  • c59fd4a chore: bump Flutter 3.44.1 → 3.44.2 (#98)

2.0.0 #

The concurrency rewrite. Every operation now runs fully isolated on its own lane — a dedicated Rust thread (native) or Web Worker (web).

  • Breaking: webCoordinatorUrl + webWorkerUrl → one webLaneWorkerUrl
  • Breaking: web now ships lane_worker.js (was coordinator.js + worker.js)
  • Engine updated — web: re-run flutter pub run pdf_manipulator:setup --force web (native updates itself)
  • Every method returns PdfTask<T> — a Future plus cancel(); cancelling kills just that job
  • pdf.dispose() is instant — no joins, no timeouts, no leaks; in-flight ops resolve with PdfCancelled
  • Operations on different handles now run truly parallel on native (1.x serialized them)
  • Lane budgets never error — past the cap, work queues instead of failing
  • Added PdfConfig.maxLanes — concurrent lanes per instance (default: half the cores, min 2)
  • All three web modes (JSPI, Atomics, OPFS) behave identically; a bad worker/WASM URL now fails instantly with a typed error instead of hanging
  • Fixed flattening — translated appearances no longer land off-page, unfilled fields render their default value, stamps render their label
  • Fixed missing WASM binaries in the 1.0.6 release
  • Fixed Android 16 KB page-size alignment for Google Play API 35+ (PR whuppi/pdf_oxide#1, @Binary-Parse)
Commits since v1.0.6 (9)
  • ad1cb65 stamp: asset hashes for v2.0.0
  • e8134c3 release: v2.0.0
  • 60e4200 chore: promote dev to prod (1.0.7) (#92)
  • b3d1823 feat: lane runtime rewrite + test, docs & CI overhaul (#97)
  • e202281 fix: release gate tag-check fallback for workflow_dispatch (#93)
  • d031a96 Merge branch 'prod' into dev
  • fb93efa feat: 16 KB Android page-size alignment (vendor/pdf_oxide update) (#91)
  • 78dfd87 fix(ci): WASM release assets + binary verification gate (#89)
  • 0091e99 fix(ci): WASM artifacts missing from releases + binary verification

1.0.6 #

  • Fixed release build routing for consumer builds (PR #80, @Binary-Parse)
  • Fixed Windows NDK linker .cmd extension for Android cross-compilation (PR #81, @Binary-Parse)
  • Added CI verify tests — release builds now verified on all 6 targets (Android, iOS, macOS, Linux, Windows, Web)
Commits since v1.0.5 (9)
  • f53de02 stamp: asset hashes for v1.0.6
  • 9ea4073 release: v1.0.6
  • c8ff236 chore: promote dev to prod (#88)
  • cc4f9b8 Merge branch 'prod' into dev
  • 0679c51 chore: add 1.0.6 changelog entries (#86)
  • ce9d7ec fix(ci): release gate only triggers on new changelog versions (#85)
  • 5083450 refactor(ci): capability-based architecture + verify release builds (#82)
  • 0132518 fix(hook): append .cmd to the NDK clang linker on Windows hosts (Android cross-compile fails) (#81)
  • 453b39e fix(hook): add link.dart passthrough, build.json, release-build tests (#80)

1.0.5 #

  • Fixed README version not stamped on pub.dev
  • Updated tracking links for web build hook support
Commits since v1.0.4 (4)
  • 8d3e363 stamp: asset hashes for v1.0.5
  • 86ade5b release: v1.0.5
  • 1288d12 chore: promote dev to prod (#79)
  • 694c96e chore: 1.0.5 release — fix README stamp + tracking links (#78)

1.0.4 #

  • Web setup now verifies all assets against release hashes — detects stale files automatically
  • setup supports --force to re-download everything, --native to pre-fetch the native binary
Commits since v1.0.3 (6)
  • 902cf4f stamp: asset hashes for v1.0.4
  • d1266fb release: v1.0.4
  • 5cd981f chore: promote dev to prod (#77)
  • cdabb02 Merge branch 'prod' into dev
  • 8dbad3b chore: add 1.0.4 changelog entries (#76)
  • d912aa1 feat: unified asset resolver — same waterfall for native and web (#75)

1.0.3 #

  • Fixed changelog on pub.dev
Commits since v1.0.2 (10)
  • 6bbaaa8 stamp: asset hashes for v1.0.3
  • 1339dc4 release: v1.0.3
  • 9b228dc chore: promote dev to prod (#73)
  • 223c1a4 Merge branch 'prod' into dev
  • 3e0ebd8 chore: add 1.0.3 changelog entries (#72)
  • 6a33c47 chore: promote dev to prod (#71)
  • 77c8738 feat(ci): preview filtered changelog in CI logs before publish approval (#70)
  • c7ffae8 docs: move slopfairy manual comments to workspace rule
  • d4471ac docs: add slopfairy manual comments + changelog preview recipes
  • ab0a74e fix(ci): same-file read-write race in stamp-changelog + bash 3.2 compat

1.0.2 #

  • Fixed changelog on pub.dev missing commit history between versions
Commits since v1.0.1 (10)
  • e420ba0 stamp: asset hashes for v1.0.2
  • 1154d43 release: v1.0.2
  • 0b610c0 fix(ci): edit asset_hashes.dart between markers instead of overwriting
  • 91bd9ad fix(ci): add doc comment to generated asset_hashes.dart constant
  • bd78225 fix(ci): version-scoped staging branch + updated UPDATING.md
  • eb2e822 fix(ci): delete stale _release-staging before push to avoid lock conflicts
  • 6990128 fix(ci): fall back to HEAD when tag doesn't exist yet in commits_collapsible
  • 0ddc9ce fix(ci): correct repo fallback to whuppi/pdf_manipulator
  • 83b44cb feat(ci): rewrite release pipeline — single release.sh, changelog builder, idempotent (#68)
  • 392aaa8 fix(ci): version-level release concurrency + branch-file gate (#67)

1.0.1 #

  • Added public API doc comments across all exported classes and methods
  • Minimum Android API corrected from 35 to 21 (Android 5.0)
  • Setup command is now flutter pub run pdf_manipulator:setup (avoids triggering native build hooks with dart run)
Commits since v1.0.0 (48)
  • 4ed5b3b release: v1.0.1
  • 722b2dd chore: add 1.0.1 changelog entry (#65)
  • d04b556 chore: add 1.0.1-dev.0 prerelease changelog entry (#64)
  • 52b6d52 ci: bump the actions group across 1 directory with 5 updates (#57)
  • 9c798ee fix(ci): notify maintainer to recreate dependabot PRs on new pushes
  • 4ade698 docs: explain Windows DLL lock in dispose test (#60)
  • e8dee7b fix: analyzer clean + web CI + native dispose safety
  • ea9c961 ci: write bore port to artifact for API access
  • 88197b4 ci: split setup/keepalive steps so SSH port shows immediately
  • 07749ec ci: fix bore version (0.6.0), serveo was dead
  • 4b4d6e5 ci: raw sshd + serveo.net tunnel (no binary downloads)
  • 4a4bd3a ci: raw sshd + bore tunnel, no tmate, 5hr timeout
  • 015b951 ci: update debug-ssh workflow
  • 5b71adf ci: add debug-ssh workflow for interactive CI debugging
  • 5874c1a chore: bump Flutter 3.44.0 → 3.44.1 (#50)
  • a26b3c2 chore: add Dependabot for GitHub Actions updates (#56)
  • 684b840 docs: fix rendering + add fvmrc pinning section (#54)
  • c06e2d9 fix: flutter-upgrade PRs created as draft (#53)
  • 9d18776 fix: slopfairy PR#51 suggestions — printf credentials + remove redundant gitignore (#52)
  • a548f42 feat: secrets.sh + per-env pub.dev credentials (#51)
  • 8ac73ea fix: add vendor false_secrets at stamp-tag time (#49)
  • 53c52aa fix: force-add Cargo.lock in stamp-tag (gitignored in vendor) (#48)
  • cbae62b fix: auto-detect wasm-bindgen-cli version from Cargo.lock (#47)
  • 3e4e5f6 fix: force-push temp branch + stale comment refs (#46)
  • 81a789f fix: push stamped commit before creating release tag (#45)
  • 90617d2 fix: mode guard was rejecting --github-notes (#44)
  • a07b935 fix: install snippets on release, generic version, cancel-in-progress (#43)
  • 8b4387f feat: unified release pipeline with approval gate (#42)
  • 7b1fac9 fix: move asset_hashes.dart to lib/src/hook/ (#41)
  • 7637a29 fix: false_secrets for test PEM keys + pin example .fvmrc (#40)
  • b16ccc4 fix: single stamp_release.sh for all pre-publish stamping (#39)
  • 51c845b fix: API-based asset hashes, MSVC-first Windows, git identity (#38)
  • 6d44016 fix: publish fails on dirty git + create-release YAML syntax (#36)
  • 5909946 fix: YAML syntax error in create-release.yml (#35)
  • ab2e79f fix: auto-generate commit lists + asset hashes at publish time (#34)
  • 6adbed3 docs: add rebuild-release recovery flow to UPDATING.md (#33)
  • 193c460 fix: compile per-platform — CI builds only the targets it installed (#32)
  • f874171 fix: add validation gate to publish.yml (#31)
  • 8da554d fix: quote YAML expression in publish.yml (#30)
  • 7fc4ae6 fix: publish.yml errors on branch push — replace all bare inputs.tag (#29)
  • d5630a0 docs: fix UPDATING.md release section — correct workflow names, document auto-trigger chain
  • 2d6d65c fix: publish.yml fails on branch push due to inputs.tag in concurrency
  • 26ce093 feat!: cross-platform Rust engine, streaming I/O, web WASM (#28)
  • 7456369 chore: rename main → prod (workflows, docs, ruleset) (#26)
  • 8dcc13f ci: commit-msg hook (merge blocker + printf), promotion-check, hooksPath docs (#23)
  • 074868f ci: fix release-please config and PR formatting (#21)
  • 945a51f ci: add release-please + tag-triggered release pipeline (#19)
  • e5e698e ci: enforce conventional commits via hook + PR title check (#17)

1.0.0 #

Complete ground-up rewrite — new Rust engine, new instance API, cross-platform (previously Android only). The package docs carry the migration guide and the full capability list.

  • Engine: pdf_oxide (Rust, MIT/Apache-2.0) replaces the Android-only backend
  • Targets: iOS, Android, macOS, Windows, Linux, Web — previously Android only
  • API: instance-based Pdf() with dispose(); batch editing via pdf.edit(source), create from scratch via pdf.build()
  • I/O: DataSource in, DataSink out — no file paths, no dart:io, same code on every target
  • Errors: typed PdfError sealed class — no more PlatformException
  • Performance: every operation off the main thread, no full-file buffers
  • SDK: requires Dart >=3.10.0

0.5.9 #

  • The last release of Android-only version before the cross-platform rewrite.
Commits since initial (256)
  • 1b5edb1 stamp: asset hashes for v4.1.0
  • bbf0ff8 release: v4.1.0
  • 00054ef release: promote dev → prod (v4.1.0) (#210)
  • bd94ef4 Merge branch 'prod' into dev
  • 65f4233 feat: scan-dirs, and make keep: auto actually scan your app (#209)
  • c4f6afc release: promote dev → prod (#208)
  • b624f54 Merge branch 'prod' into dev
  • 7502a31 feat!: engine config → keep / detector / build; one compile driver; Rust pin+gate (#183); resilient downloads (#185)
  • cca99f0 ci: bump all action refs (workflows + composites) (#207)
  • 5e9c33f chore: refresh lockfiles (#205)
  • 551491b chore: bump Flutter SDK (#204)
  • b983534 ci: one owner for all action refs (whuppi/ci v2.4.0), Dependabot = pub only (#206)
  • 8927f03 ci: revert Renovate — back to dependabot + upgrade-check (#201)
  • c25c058 ci: Renovate — no hourly PR limit for the go-live backlog (#194)
  • e5c7afe ci: Renovate — open bump PRs immediately (drop not-pending) (#191)
  • 37af265 ci: Renovate — disable commit statuses (unblock PR creation) (#189)
  • d52959c ci: go live on Renovate — remove dependabot + upgrade-check shared job (#188)
  • bd510b6 ci: tune Renovate config (pinDigests + schedules) (#187)
  • a474ca5 ci: add self-hosted Renovate (replaces dependabot + sweeps) (#186)
  • da98a3e chore: bump the deps group with 2 updates (#181)
  • ab9217b chore: refresh lockfiles (#184)
  • 2364765 chore: bump Flutter SDK (#182)
  • eeb322d chore: promote dev to prod (3.0.0) (#179)
  • 9fadb24 Merge branch 'prod' into dev
  • afd3b45 fix: Rust-only trim toolchain — comment-aware scan, rustc target probe, workspace-locked wasm tools (#178)
  • 7322e8d chore: refresh lockfiles (#174)
  • e423aad ci: run analyze-floor in make check and guard battery-runner completeness
  • 4066afa docs(roadmap): record_use ^0.6.0 pin reason + bump trigger (#173)
  • 23fe620 fix: ship vendor Cargo.lock in the pub tarball + tarball gate (#171) (#172)
  • 2002f69 chore: promote dev to prod (2.2.0) (#170)
  • 6ce511d Merge branch 'prod' into dev
  • f15167e chore: bump pinned versions (#168)
  • ff1309d feat: trim — ship only the ops the app calls (#167) (#169)
  • 41155eb ci: bump dorny/paths-filter from 4.0.1 to 4.0.2 in the actions group (#165)
  • 7cde443 chore: refresh lockfiles (#166)
  • 14cd751 chore: promote dev to prod (2.1.4) (#164)
  • cefb01f Merge branch 'prod' into dev
  • 0f751b1 docs: 2.1.4 — split-session flatten, indirect /Annots stamp, NeedAppearances render (#163)
  • 0245950 fix: #161 split-session flatten + indirect /Annots stamp (bump pdf_oxide v0.3.73 / office_oxide v0.1.3) (#162)
  • 7dd115d chore: refresh lockfiles (#160)
  • 6e7e8fa chore: bump Flutter SDK (#159)
  • cce6645 chore: promote dev to prod (2.1.3) (#158)
  • efa47f2 Merge branch 'prod' into dev
  • 9ed0c7c docs: 2.1.3 — form text-string encoding fixes (#157)
  • 10dee1f chore: bump Flutter SDK (#154)
  • fb5ee1f fix: form fill/flatten non-ASCII text handling (ß, umlauts, CJK) (#156)
  • 9b21629 chore: promote dev to prod (2.1.2) (#153)
  • 4f61ed1 Merge branch 'prod' into dev
  • ec338d8 ci: bump whuppi/ci to v2.0.4 (#151)
  • 8ae80af ci: bump whuppi/ci to v2.0.3 (#150)
  • 6c267f8 ci: bump whuppi/ci to v2.0.2 (#149)
  • 711055d ci: bump whuppi/ci to v2.0.1 (#148)
  • f8fdf61 docs: 2.1.2 — dart2wasm web fix + web platform on pub.dev (#147)
  • 7c0e15a fix: dart2wasm web build; adopt whuppi/ci v2.0.0 dual-compiler gate (#146)
  • 6fc0ec3 chore: adopt whuppi/ci v1.0.8 (#144)
  • f724639 build: adopt the shared platforms gate + shell lint (#142)
  • f237ade ci: align dependabot/labels/upgrade-body with the workspace shape (#141)
  • 6fe4598 chore: bump pinned versions (#139)
  • f05ed54 build: shared strict analyze gate + whuppi/ci pin bump to v1.0.6 (#140)
  • a98a69f docs: fix stale branch-protection recipe (#138)
  • aa20ef0 ci: bump whuppi/ci shared refs to v1.0.4 (#137)
  • 1614841 ci: migrate onto the shared whuppi/ci@v1.0.1 (#136)
  • 79dc1f8 chore: bump pinned versions (#134)
  • ffb3048 fix: show web platform support on pub.dev (stub-default seam) + pana platform gate (#133)
  • ed305ea chore: bump pinned versions (#130)
  • a82d751 chore: refresh lockfiles (#131)
  • 1ccf266 fix(ci): resolve fvm on windows via native fvm.exe, not a .bat shim (#132)
  • 657804e chore: promote dev to prod (#129)
  • 9af712c Merge branch 'prod' into dev
  • af178e9 fix(ci): refresh the example lockfile with flutter, not dart (#128)
  • 9a8f5d0 chore: bump pinned versions (#127)
  • 21368ff chore: refresh lockfiles (#125)
  • cce4135 ci: verify the dependency floor compiles (analyze on oldest deps) (#126)
  • 464f06c chore: bump pinned versions (#124)
  • 0a58c7b ci: gate .gitmodules to the owner (#123)
  • 7295a0e chore: promote dev to prod (2.1.1) (#122)
  • e9c3bd5 Merge branch 'prod' into dev
  • 3ac56cb ci: unblock the release pipeline + supply-chain & workflow hardening (#121)
  • 8c63ea2 chore: promote dev to prod (2.1.1) (#119)
  • cd4f499 Merge branch 'prod' into dev
  • c9ef5d0 fix(ci): re-supply git push auth in release.sh (#120)
  • 2724150 docs: add 2.1.1 changelog entry for the README fix (#118)
  • 16d2241 ci: declare repo labels as code with a sync workflow (#117)
  • dc1037d ci: harden CI to zizmor-auditor zero with a supply-chain SSOT (#113)
  • 441ec72 ci: bump actions/stale from 9 to 10 in the actions group (#114)
  • 2dde3f0 ci: auto-close resolved issues with an opt-out guard (#112)
  • 3dbae4e ci: flatten README banner for the pub.dev tarball (#111)
  • f8c7bf1 chore: promote dev to prod (#109)
  • 4bb7149 ci: add changelog version check (#110)
  • 779495f Merge branch 'prod' into dev
  • 2b5c35e feat: add producer and creation-date document metadata (#108)
  • cc837da docs: changelog 2.0.2 — addImageStamp PNG transparency fix (#107)
  • 5392e95 ci: bump actions/checkout from 6 to 7 in the actions group across 1 directory (#106)
  • eb15b4d fix: addImageStamp preserves PNG transparency (no black box) (#104)
  • 271c1d5 ci: vendored-engine cargo tests + consistent job names (#105)
  • 0d623bf ci: bump actions/labeler from 5 to 6 in the actions group (#102)
  • 15ea53a chore: promote dev to prod (2.0.1) (#101)
  • 8a41292 Merge branch 'prod' into dev
  • 9786314 feat: pdf_manipulator/io.dart + README & docs polish (#100)
  • c59fd4a chore: bump Flutter 3.44.1 → 3.44.2 (#98)
  • 60e4200 chore: promote dev to prod (1.0.7) (#92)
  • b3d1823 feat: lane runtime rewrite + test, docs & CI overhaul (#97)
  • e202281 fix: release gate tag-check fallback for workflow_dispatch (#93)
  • d031a96 Merge branch 'prod' into dev
  • fb93efa feat: 16 KB Android page-size alignment (vendor/pdf_oxide update) (#91)
  • 78dfd87 fix(ci): WASM release assets + binary verification gate (#89)
  • 0091e99 fix(ci): WASM artifacts missing from releases + binary verification
  • c8ff236 chore: promote dev to prod (#88)
  • cc4f9b8 Merge branch 'prod' into dev
  • 0679c51 chore: add 1.0.6 changelog entries (#86)
  • ce9d7ec fix(ci): release gate only triggers on new changelog versions (#85)
  • 5083450 refactor(ci): capability-based architecture + verify release builds (#82)
  • 0132518 fix(hook): append .cmd to the NDK clang linker on Windows hosts (Android cross-compile fails) (#81)
  • 453b39e fix(hook): add link.dart passthrough, build.json, release-build tests (#80)
  • 1288d12 chore: promote dev to prod (#79)
  • 694c96e chore: 1.0.5 release — fix README stamp + tracking links (#78)
  • 5cd981f chore: promote dev to prod (#77)
  • cdabb02 Merge branch 'prod' into dev
  • 8dbad3b chore: add 1.0.4 changelog entries (#76)
  • d912aa1 feat: unified asset resolver — same waterfall for native and web (#75)
  • 9b228dc chore: promote dev to prod (#73)
  • 223c1a4 Merge branch 'prod' into dev
  • 3e0ebd8 chore: add 1.0.3 changelog entries (#72)
  • 6a33c47 chore: promote dev to prod (#71)
  • 77c8738 feat(ci): preview filtered changelog in CI logs before publish approval (#70)
  • c7ffae8 docs: move slopfairy manual comments to workspace rule
  • d4471ac docs: add slopfairy manual comments + changelog preview recipes
  • ab0a74e fix(ci): same-file read-write race in stamp-changelog + bash 3.2 compat
  • 0b610c0 fix(ci): edit asset_hashes.dart between markers instead of overwriting
  • 91bd9ad fix(ci): add doc comment to generated asset_hashes.dart constant
  • bd78225 fix(ci): version-scoped staging branch + updated UPDATING.md
  • eb2e822 fix(ci): delete stale _release-staging before push to avoid lock conflicts
  • 6990128 fix(ci): fall back to HEAD when tag doesn't exist yet in commits_collapsible
  • 0ddc9ce fix(ci): correct repo fallback to whuppi/pdf_manipulator
  • 83b44cb feat(ci): rewrite release pipeline — single release.sh, changelog builder, idempotent (#68)
  • 392aaa8 fix(ci): version-level release concurrency + branch-file gate (#67)
  • 722b2dd chore: add 1.0.1 changelog entry (#65)
  • d04b556 chore: add 1.0.1-dev.0 prerelease changelog entry (#64)
  • 52b6d52 ci: bump the actions group across 1 directory with 5 updates (#57)
  • 9c798ee fix(ci): notify maintainer to recreate dependabot PRs on new pushes
  • 4ade698 docs: explain Windows DLL lock in dispose test (#60)
  • e8dee7b fix: analyzer clean + web CI + native dispose safety
  • ea9c961 ci: write bore port to artifact for API access
  • 88197b4 ci: split setup/keepalive steps so SSH port shows immediately
  • 07749ec ci: fix bore version (0.6.0), serveo was dead
  • 4b4d6e5 ci: raw sshd + serveo.net tunnel (no binary downloads)
  • 4a4bd3a ci: raw sshd + bore tunnel, no tmate, 5hr timeout
  • 015b951 ci: update debug-ssh workflow
  • 5b71adf ci: add debug-ssh workflow for interactive CI debugging
  • 5874c1a chore: bump Flutter 3.44.0 → 3.44.1 (#50)
  • a26b3c2 chore: add Dependabot for GitHub Actions updates (#56)
  • 684b840 docs: fix rendering + add fvmrc pinning section (#54)
  • c06e2d9 fix: flutter-upgrade PRs created as draft (#53)
  • 9d18776 fix: slopfairy PR#51 suggestions — printf credentials + remove redundant gitignore (#52)
  • a548f42 feat: secrets.sh + per-env pub.dev credentials (#51)
  • 8ac73ea fix: add vendor false_secrets at stamp-tag time (#49)
  • 53c52aa fix: force-add Cargo.lock in stamp-tag (gitignored in vendor) (#48)
  • cbae62b fix: auto-detect wasm-bindgen-cli version from Cargo.lock (#47)
  • 3e4e5f6 fix: force-push temp branch + stale comment refs (#46)
  • 81a789f fix: push stamped commit before creating release tag (#45)
  • 90617d2 fix: mode guard was rejecting --github-notes (#44)
  • a07b935 fix: install snippets on release, generic version, cancel-in-progress (#43)
  • 8b4387f feat: unified release pipeline with approval gate (#42)
  • 7b1fac9 fix: move asset_hashes.dart to lib/src/hook/ (#41)
  • 7637a29 fix: false_secrets for test PEM keys + pin example .fvmrc (#40)
  • b16ccc4 fix: single stamp_release.sh for all pre-publish stamping (#39)
  • 51c845b fix: API-based asset hashes, MSVC-first Windows, git identity (#38)
  • 6d44016 fix: publish fails on dirty git + create-release YAML syntax (#36)
  • 5909946 fix: YAML syntax error in create-release.yml (#35)
  • ab2e79f fix: auto-generate commit lists + asset hashes at publish time (#34)
  • 6adbed3 docs: add rebuild-release recovery flow to UPDATING.md (#33)
  • 193c460 fix: compile per-platform — CI builds only the targets it installed (#32)
  • f874171 fix: add validation gate to publish.yml (#31)
  • 8da554d fix: quote YAML expression in publish.yml (#30)
  • 7fc4ae6 fix: publish.yml errors on branch push — replace all bare inputs.tag (#29)
  • d5630a0 docs: fix UPDATING.md release section — correct workflow names, document auto-trigger chain
  • 2d6d65c fix: publish.yml fails on branch push due to inputs.tag in concurrency
  • 26ce093 feat!: cross-platform Rust engine, streaming I/O, web WASM (#28)
  • 7456369 chore: rename main → prod (workflows, docs, ruleset) (#26)
  • 8dcc13f ci: commit-msg hook (merge blocker + printf), promotion-check, hooksPath docs (#23)
  • 074868f ci: fix release-please config and PR formatting (#21)
  • 945a51f ci: add release-please + tag-triggered release pipeline (#19)
  • e5e698e ci: enforce conventional commits via hook + PR title check (#17)
  • 67edc60 add pre-commit hook: reject commits with gitignored files
  • da16d8a untrack example/pubspec.lock (gitignored, should never have been tracked)
  • 9a3dc68 fix: .pubignore for vendor/ + compile WASM before web tests
  • 02e92a5 fix(ci): checkout in workflows before local composite actions
  • 55d9e58 ci: 10 composite actions, zero duplication, test-first flow
  • e6bf54b release: manual re-trigger + overwrite existing releases
  • 9328919 ci: split WASM into its own compile job
  • dfcd65f fix: WASM target + Rust warnings in release CI
  • 2dbb00e hook: rewrite using native_toolchain_rust patterns
  • 28daa58 hook: use StaticLinking for iOS + install both device and sim targets
  • c8f4bfe hook: set NDK linker for Android cargo cross-compilation
  • 4e72a4a ci: add x86_64-linux-android rust target for Android emulator tests
  • c9c26ab ci: fix android emulator-runner cd not persisting between commands
  • eef11c8 ci: commit .metadata, remove destructive flutter create
  • f144ba5 ci: fix Android + iOS integration test failures
  • 6b9e7d7 updating.md: add submodule commit discipline (3-step sequence)
  • bf50a39 submodule: update to include all Rust patches
  • 8fcec5f ci: fix pub get failure — skip example deps in Dart-only jobs
  • a62a36b roadmap: add upstream v0.3.48 office conversion features
  • 621f091 fix upstream URL + expand S1 bump recipe
  • 8e67064 provenance: link to fork repo + branch, document fork convention
  • b93b9ec v1.0.0 API redesign + web feature parity + doc cleanup
  • e7e0338 editor: add missing addStamp + addWatermarkPositioned wrappers
  • 4ba4264 fix migration guide + expand contributing
  • 0374c59 readme: feature×platform matrix, docs table, community files
  • c0e712c bump to 1.0.0, fix stale README references
  • 581e844 v1.0.0 — complete ground-up rewrite
  • a99fbdb Make plugin compatible with Gradle 8+ while keeping support for older versions
  • 4a0102b Update issue templates
  • 257bc10 Update issue templates
  • 9dc0251 * Fixed error "Build file '\pdf_manipulator\android\build.gradle' should not contain a package statement".
  • 8d17db2 * Attempts to fix "x + width must be <= bitmap.width()" exception on some devices in some case of PDF compressing. * Updated documentation regarding PlatformException in Release build: AbstractITextEvent is only for internal usage #2.
  • 8e7c094 Update README.md
  • 51a54b6 Update README.md
  • 939c73f Update README.md
  • bbf346f Update README.md
  • ad48def Update README.md
  • 51eac08 * Updated pub version.
  • 5531a95 * Updated dependency.
  • 4a787c1 * Pub version update.
  • 2a40976 Merge remote-tracking branch 'origin/master'
  • bd9155e * Added new description.
  • 30ab01b Update README.md
  • 2603470 * Updated documentation. * Improved example app.
  • bf5ca20 Merge branch 'master' of https://github.com/chaudharydeepanshu/pdf_manipulator
  • 083f86c Update README.md
  • aab073a Merge branch 'master' of https://github.com/chaudharydeepanshu/pdf_manipulator
  • c8b771e Create LICENSE
  • 76e31b2 Update README.md
  • 64d4388 * Fixes crash on pdfCompressor with unEmbedFonts set true for some pdfs.
  • bcf78e3 * Removed unnecessary catch blocks.
  • dc681b6 * Now pdfDecryption finishes with error on BadPasswordException and PdfException.
  • 22e58a9 * Fixed imagesToPdfs method not working for absolute file paths of files with names containing :.
  • 0d0a83f * Fixed imagesToPdfs method not working for android absolute file paths.
  • a31774e * Fixed imagesToPdfs method not working for android uris. * Fixed imagesToPdfs adding unnecessary padding to pdfs when createSinglePdf is set to false or default. * Updated example and example dependency.
  • 1dea7a8 * Added imagesToPdfs method for converting images to single pdf or multiple pdfs.
  • c21c1f1 * Added pdfEncryption method for pdf encryption. * Added pdfDecryption method for pdf decryption. * Added pdfValidityAndProtection method for getting pdf validity and protection info.
  • c28db0a * Fixed pdfPagesSize method OOM issue also removed redundant properties.
  • 81ae92c * Added positionType in pdfWatermark method which provides various predefined and allows providing custom watermark positions.* AddedpdfPagesSizemethod for getting size info of pages of pdf. * AddedcustomPositionXCoordinatesList, customPositionYCoordinatesListinpdfWatermark` method for more fine controlling of watermark position.
  • 18a5dc9 * Added pdfWatermark method for watermarking pdf.
  • 6886f97 * Added unEmbedFonts for pdfCompressor.
  • c192813 * Added pdfCompressor method for compressing pdf.
  • 48df0f6 * pdfUri is replaced with pdfPath as now pdfPath is capable of taking care both URI path and absolute file path. * pdfsUris is replaced with pdfsPaths as now pdfsPaths is capable of taking care both URI paths and absolute file paths. * Fixed issue of not being able to use absolute file paths. * Flushing pdfWriters when splitting documents for trying to fix OOfM error in some cases.
  • db77334 * Support for rotating, deleting and reordering pdf pages. * Fixes OOfM error in some cases. * Fixes few errors in splitting by byte size.
  • 439b37d new pub.dev version
  • dcd3568 typo fix
  • 42ea493 dependencies updated
  • b4143c9 Update README.md
  • cb740ed Update LICENSE
  • 1bb42a3 Update README.md
  • 87a7c36 added pdf page deleter functionality
  • 90aff66 added other split pdf functions
  • d903a62 Initial commit
77
likes
160
points
2.51k
downloads

Documentation

API reference

Publisher

verified publisherwhuppi.com

Weekly Downloads

Cross-platform PDF toolkit for Flutter. Merge, split, render, extract, search, sign, encrypt, convert, build from scratch. Rust engine, off the main thread.

Repository (GitHub)
View/report issues
Contributing

Topics

#pdf #ffi #wasm #document #encryption

License

MIT (license)

Dependencies

code_assets, crypto, ffi, hooks, logging, meta, package_config, path, record_use, web, yaml

More

Packages that depend on pdf_manipulator