pdf-rs 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. pdf_rs-0.1.0/.gitattributes +3 -0
  2. pdf_rs-0.1.0/.github/workflows/ci.yml +131 -0
  3. pdf_rs-0.1.0/.github/workflows/release.yml +102 -0
  4. pdf_rs-0.1.0/.gitignore +9 -0
  5. pdf_rs-0.1.0/CONTRIBUTING.md +46 -0
  6. pdf_rs-0.1.0/Cargo.lock +291 -0
  7. pdf_rs-0.1.0/Cargo.toml +29 -0
  8. pdf_rs-0.1.0/PKG-INFO +100 -0
  9. pdf_rs-0.1.0/README.md +88 -0
  10. pdf_rs-0.1.0/dist/pdf_rs-0.1.0-cp39-abi3-manylinux_2_34_x86_64.whl +0 -0
  11. pdf_rs-0.1.0/pyproject.toml +21 -0
  12. pdf_rs-0.1.0/src/annotation.rs +43 -0
  13. pdf_rs-0.1.0/src/cmap.rs +307 -0
  14. pdf_rs-0.1.0/src/content.rs +258 -0
  15. pdf_rs-0.1.0/src/document.rs +1719 -0
  16. pdf_rs-0.1.0/src/embedded_file.rs +58 -0
  17. pdf_rs-0.1.0/src/error.rs +94 -0
  18. pdf_rs-0.1.0/src/form.rs +74 -0
  19. pdf_rs-0.1.0/src/inspect.rs +111 -0
  20. pdf_rs-0.1.0/src/lexer.rs +306 -0
  21. pdf_rs-0.1.0/src/lib.rs +53 -0
  22. pdf_rs-0.1.0/src/link.rs +22 -0
  23. pdf_rs-0.1.0/src/llm.rs +398 -0
  24. pdf_rs-0.1.0/src/main.rs +109 -0
  25. pdf_rs-0.1.0/src/markdown.rs +167 -0
  26. pdf_rs-0.1.0/src/metadata.rs +107 -0
  27. pdf_rs-0.1.0/src/object.rs +473 -0
  28. pdf_rs-0.1.0/src/outline.rs +10 -0
  29. pdf_rs-0.1.0/src/page.rs +106 -0
  30. pdf_rs-0.1.0/src/page_label.rs +136 -0
  31. pdf_rs-0.1.0/src/parser.rs +240 -0
  32. pdf_rs-0.1.0/src/python.rs +956 -0
  33. pdf_rs-0.1.0/src/resource.rs +331 -0
  34. pdf_rs-0.1.0/src/writer.rs +525 -0
  35. pdf_rs-0.1.0/tests/basic_parse.rs +2310 -0
  36. pdf_rs-0.1.0/tests/gen/complex.typ +35 -0
  37. pdf_rs-0.1.0/tests/gen/references.typ +14 -0
  38. pdf_rs-0.1.0/tests/gen/test1.typ +2 -0
  39. pdf_rs-0.1.0/tests/python_api.py +125 -0
  40. pdf_rs-0.1.0/tests/real_world_smoke.rs +41 -0
  41. pdf_rs-0.1.0/tools/compare_pdf_perf.py +221 -0
  42. pdf_rs-0.1.0/tools/profile_pdf_rs.py +103 -0
@@ -0,0 +1,3 @@
1
+ * text=auto eol=lf
2
+
3
+ *.ps1 text eol=crlf
@@ -0,0 +1,131 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ concurrency:
13
+ group: ci-${{ github.workflow }}-${{ github.ref }}
14
+ cancel-in-progress: true
15
+
16
+ env:
17
+ CARGO_TERM_COLOR: always
18
+
19
+ jobs:
20
+ rust:
21
+ name: Rust checks (${{ matrix.os }})
22
+ runs-on: ${{ matrix.os }}
23
+ strategy:
24
+ fail-fast: false
25
+ matrix:
26
+ os: [ubuntu-latest, windows-latest, macos-latest]
27
+
28
+ steps:
29
+ - name: Checkout
30
+ uses: actions/checkout@v6
31
+
32
+ - name: Set up Python
33
+ uses: actions/setup-python@v6
34
+ with:
35
+ python-version: "3.12"
36
+
37
+ - name: Install Rust components
38
+ run: rustup component add rustfmt clippy
39
+
40
+ - name: Cache cargo
41
+ uses: Swatinem/rust-cache@v2
42
+ with:
43
+ shared-key: cargo-${{ runner.os }}
44
+
45
+ - name: Format
46
+ run: cargo fmt --check
47
+
48
+ - name: Test
49
+ run: cargo test
50
+
51
+ - name: Clippy
52
+ run: cargo clippy --all-targets -- -D warnings
53
+
54
+ - name: Check mimalloc feature
55
+ run: cargo check --features mimalloc
56
+
57
+ - name: Clippy Python feature
58
+ run: cargo clippy --features python --all-targets -- -D warnings
59
+
60
+ typst-fixtures:
61
+ name: Typst fixture tests
62
+ runs-on: ubuntu-latest
63
+
64
+ steps:
65
+ - name: Checkout
66
+ uses: actions/checkout@v6
67
+
68
+ - name: Set up Python
69
+ uses: actions/setup-python@v6
70
+ with:
71
+ python-version: "3.12"
72
+
73
+ - name: Install Rust components
74
+ run: rustup component add rustfmt clippy
75
+
76
+ - name: Cache cargo
77
+ uses: Swatinem/rust-cache@v2
78
+ with:
79
+ shared-key: typst-fixtures
80
+
81
+ - name: Install Typst
82
+ run: cargo install typst-cli --locked
83
+
84
+ - name: Run Typst-backed tests
85
+ env:
86
+ PDF_RS_REQUIRE_TYPST: "1"
87
+ run: cargo test typst -- --nocapture
88
+
89
+ python-wheel:
90
+ name: Python wheel smoke (${{ matrix.os }})
91
+ runs-on: ${{ matrix.os }}
92
+ strategy:
93
+ fail-fast: false
94
+ matrix:
95
+ os: [ubuntu-latest, windows-latest, macos-latest]
96
+
97
+ steps:
98
+ - name: Checkout
99
+ uses: actions/checkout@v6
100
+
101
+ - name: Set up Python
102
+ uses: actions/setup-python@v6
103
+ with:
104
+ python-version: "3.12"
105
+
106
+ - name: Cache cargo
107
+ uses: Swatinem/rust-cache@v2
108
+ with:
109
+ shared-key: wheel-${{ runner.os }}
110
+
111
+ - name: Install maturin
112
+ run: python -m pip install --upgrade pip maturin
113
+
114
+ - name: Build wheel
115
+ run: maturin build --features python --out dist
116
+
117
+ - name: Install wheel
118
+ shell: bash
119
+ run: |
120
+ python -m pip install --force-reinstall dist/*.whl
121
+
122
+ - name: Python smoke
123
+ run: python tests/python_api.py
124
+
125
+ - name: Upload wheel artifact
126
+ uses: actions/upload-artifact@v6
127
+ with:
128
+ name: wheel-${{ matrix.os }}
129
+ path: dist/*
130
+ if-no-files-found: error
131
+ retention-days: 7
@@ -0,0 +1,102 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*.*.*"
7
+
8
+ permissions:
9
+ contents: write
10
+ id-token: write
11
+
12
+ concurrency:
13
+ group: release-${{ github.workflow }}-${{ github.ref }}
14
+ cancel-in-progress: false
15
+
16
+ env:
17
+ CARGO_TERM_COLOR: always
18
+
19
+ jobs:
20
+ build:
21
+ name: Build distributions (${{ matrix.os }})
22
+ runs-on: ${{ matrix.os }}
23
+ strategy:
24
+ fail-fast: false
25
+ matrix:
26
+ include:
27
+ - os: ubuntu-latest
28
+ artifact: linux
29
+ build_sdist: true
30
+ - os: windows-latest
31
+ artifact: windows
32
+ build_sdist: false
33
+ - os: macos-latest
34
+ artifact: macos
35
+ build_sdist: false
36
+
37
+ steps:
38
+ - name: Checkout
39
+ uses: actions/checkout@v6
40
+
41
+ - name: Set up Python
42
+ uses: actions/setup-python@v6
43
+ with:
44
+ python-version: "3.12"
45
+
46
+ - name: Cache cargo
47
+ uses: Swatinem/rust-cache@v2
48
+ with:
49
+ shared-key: release-${{ runner.os }}
50
+
51
+ - name: Install maturin
52
+ run: python -m pip install --upgrade pip maturin
53
+
54
+ - name: Build wheel
55
+ run: maturin build --release --features python --out dist
56
+
57
+ - name: Build sdist
58
+ if: matrix.build_sdist
59
+ run: maturin sdist --out dist
60
+
61
+ - name: Upload distributions
62
+ uses: actions/upload-artifact@v6
63
+ with:
64
+ name: dist-${{ matrix.artifact }}
65
+ path: dist/*
66
+ if-no-files-found: error
67
+ retention-days: 14
68
+
69
+ publish:
70
+ name: Publish PyPI and GitHub release
71
+ needs: build
72
+ runs-on: ubuntu-latest
73
+ environment: pypi
74
+
75
+ steps:
76
+ - name: Checkout
77
+ uses: actions/checkout@v6
78
+
79
+ - name: Download distributions
80
+ uses: actions/download-artifact@v7
81
+ with:
82
+ pattern: dist-*
83
+ path: dist
84
+ merge-multiple: true
85
+
86
+ - name: List distributions
87
+ run: ls -lah dist
88
+
89
+ - name: Publish to PyPI
90
+ uses: pypa/gh-action-pypi-publish@release/v1
91
+ with:
92
+ packages-dir: dist
93
+ password: ${{ secrets.PYPI_API_TOKEN }}
94
+ skip-existing: true
95
+
96
+ - name: Create GitHub release
97
+ env:
98
+ GH_TOKEN: ${{ github.token }}
99
+ run: |
100
+ gh release create "${GITHUB_REF_NAME}" dist/* \
101
+ --title "${GITHUB_REF_NAME}" \
102
+ --generate-notes
@@ -0,0 +1,9 @@
1
+ /target
2
+ /ref
3
+ *.zip
4
+ *.pdf
5
+ *.png
6
+ *.jpg
7
+ AGENTS.md
8
+ .venv
9
+
@@ -0,0 +1,46 @@
1
+ # Contributing
2
+
3
+ ## Development Loop
4
+
5
+ 1. Keep changes focused on the parser, Python API, tools, tests, or release
6
+ automation being changed.
7
+ 2. Add tests under `tests/` for parser behavior and corner cases.
8
+ 3. Run formatting, tests, and clippy before opening a pull request.
9
+
10
+ ```powershell
11
+ cargo fmt --check
12
+ cargo test
13
+ cargo clippy --all-targets -- -D warnings
14
+ ```
15
+
16
+ When touching Python bindings, also run:
17
+
18
+ ```powershell
19
+ cargo clippy --features python --all-targets -- -D warnings
20
+ uvx maturin build --features python --out target\wheels
21
+ ```
22
+
23
+ ## Commit Messages
24
+
25
+ Use:
26
+
27
+ ```text
28
+ action(scope): detailed changes
29
+ ```
30
+
31
+ Examples:
32
+
33
+ ```text
34
+ feat(parser): add batched object stream expansion
35
+ ci(release): build abi3 wheels for tagged releases
36
+ test(python): cover LLM chunk and OCR request APIs
37
+ ```
38
+
39
+ ## Release Checklist
40
+
41
+ 1. Update versions in `Cargo.toml` and `pyproject.toml`.
42
+ 2. Run the full local check set from `README.md`.
43
+ 3. Push changes to `main`.
44
+ 4. Create and push a semver tag such as `v0.1.0`.
45
+ 5. Confirm the GitHub release workflow builds all artifacts, publishes to PyPI,
46
+ and attaches the distributions to the GitHub release.
@@ -0,0 +1,291 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "adler2"
7
+ version = "2.0.1"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
10
+
11
+ [[package]]
12
+ name = "cc"
13
+ version = "1.2.62"
14
+ source = "registry+https://github.com/rust-lang/crates.io-index"
15
+ checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98"
16
+ dependencies = [
17
+ "find-msvc-tools",
18
+ "shlex",
19
+ ]
20
+
21
+ [[package]]
22
+ name = "cfg-if"
23
+ version = "1.0.4"
24
+ source = "registry+https://github.com/rust-lang/crates.io-index"
25
+ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
26
+
27
+ [[package]]
28
+ name = "crc32fast"
29
+ version = "1.5.0"
30
+ source = "registry+https://github.com/rust-lang/crates.io-index"
31
+ checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
32
+ dependencies = [
33
+ "cfg-if",
34
+ ]
35
+
36
+ [[package]]
37
+ name = "find-msvc-tools"
38
+ version = "0.1.9"
39
+ source = "registry+https://github.com/rust-lang/crates.io-index"
40
+ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
41
+
42
+ [[package]]
43
+ name = "flate2"
44
+ version = "1.1.9"
45
+ source = "registry+https://github.com/rust-lang/crates.io-index"
46
+ checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
47
+ dependencies = [
48
+ "crc32fast",
49
+ "miniz_oxide",
50
+ ]
51
+
52
+ [[package]]
53
+ name = "heck"
54
+ version = "0.5.0"
55
+ source = "registry+https://github.com/rust-lang/crates.io-index"
56
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
57
+
58
+ [[package]]
59
+ name = "libc"
60
+ version = "0.2.186"
61
+ source = "registry+https://github.com/rust-lang/crates.io-index"
62
+ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
63
+
64
+ [[package]]
65
+ name = "libmimalloc-sys"
66
+ version = "0.1.47"
67
+ source = "registry+https://github.com/rust-lang/crates.io-index"
68
+ checksum = "2d1eacfa31c33ec25e873c136ba5669f00f9866d0688bea7be4d3f7e43067df6"
69
+ dependencies = [
70
+ "cc",
71
+ ]
72
+
73
+ [[package]]
74
+ name = "memmap2"
75
+ version = "0.9.10"
76
+ source = "registry+https://github.com/rust-lang/crates.io-index"
77
+ checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3"
78
+ dependencies = [
79
+ "libc",
80
+ ]
81
+
82
+ [[package]]
83
+ name = "mimalloc"
84
+ version = "0.1.50"
85
+ source = "registry+https://github.com/rust-lang/crates.io-index"
86
+ checksum = "b3627c4272df786b9260cabaa46aec1d59c93ede723d4c3ef646c503816b0640"
87
+ dependencies = [
88
+ "libmimalloc-sys",
89
+ ]
90
+
91
+ [[package]]
92
+ name = "miniz_oxide"
93
+ version = "0.8.9"
94
+ source = "registry+https://github.com/rust-lang/crates.io-index"
95
+ checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
96
+ dependencies = [
97
+ "adler2",
98
+ "simd-adler32",
99
+ ]
100
+
101
+ [[package]]
102
+ name = "once_cell"
103
+ version = "1.21.4"
104
+ source = "registry+https://github.com/rust-lang/crates.io-index"
105
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
106
+
107
+ [[package]]
108
+ name = "pdf-rs"
109
+ version = "0.1.0"
110
+ dependencies = [
111
+ "flate2",
112
+ "memmap2",
113
+ "mimalloc",
114
+ "pyo3",
115
+ "thiserror",
116
+ "tracing",
117
+ ]
118
+
119
+ [[package]]
120
+ name = "pin-project-lite"
121
+ version = "0.2.17"
122
+ source = "registry+https://github.com/rust-lang/crates.io-index"
123
+ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
124
+
125
+ [[package]]
126
+ name = "portable-atomic"
127
+ version = "1.13.1"
128
+ source = "registry+https://github.com/rust-lang/crates.io-index"
129
+ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
130
+
131
+ [[package]]
132
+ name = "proc-macro2"
133
+ version = "1.0.106"
134
+ source = "registry+https://github.com/rust-lang/crates.io-index"
135
+ checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
136
+ dependencies = [
137
+ "unicode-ident",
138
+ ]
139
+
140
+ [[package]]
141
+ name = "pyo3"
142
+ version = "0.28.3"
143
+ source = "registry+https://github.com/rust-lang/crates.io-index"
144
+ checksum = "91fd8e38a3b50ed1167fb981cd6fd60147e091784c427b8f7183a7ee32c31c12"
145
+ dependencies = [
146
+ "libc",
147
+ "once_cell",
148
+ "portable-atomic",
149
+ "pyo3-build-config",
150
+ "pyo3-ffi",
151
+ "pyo3-macros",
152
+ ]
153
+
154
+ [[package]]
155
+ name = "pyo3-build-config"
156
+ version = "0.28.3"
157
+ source = "registry+https://github.com/rust-lang/crates.io-index"
158
+ checksum = "e368e7ddfdeb98c9bca7f8383be1648fd84ab466bf2bc015e94008db6d35611e"
159
+ dependencies = [
160
+ "target-lexicon",
161
+ ]
162
+
163
+ [[package]]
164
+ name = "pyo3-ffi"
165
+ version = "0.28.3"
166
+ source = "registry+https://github.com/rust-lang/crates.io-index"
167
+ checksum = "7f29e10af80b1f7ccaf7f69eace800a03ecd13e883acfacc1e5d0988605f651e"
168
+ dependencies = [
169
+ "libc",
170
+ "pyo3-build-config",
171
+ ]
172
+
173
+ [[package]]
174
+ name = "pyo3-macros"
175
+ version = "0.28.3"
176
+ source = "registry+https://github.com/rust-lang/crates.io-index"
177
+ checksum = "df6e520eff47c45997d2fc7dd8214b25dd1310918bbb2642156ef66a67f29813"
178
+ dependencies = [
179
+ "proc-macro2",
180
+ "pyo3-macros-backend",
181
+ "quote",
182
+ "syn",
183
+ ]
184
+
185
+ [[package]]
186
+ name = "pyo3-macros-backend"
187
+ version = "0.28.3"
188
+ source = "registry+https://github.com/rust-lang/crates.io-index"
189
+ checksum = "c4cdc218d835738f81c2338f822078af45b4afdf8b2e33cbb5916f108b813acb"
190
+ dependencies = [
191
+ "heck",
192
+ "proc-macro2",
193
+ "pyo3-build-config",
194
+ "quote",
195
+ "syn",
196
+ ]
197
+
198
+ [[package]]
199
+ name = "quote"
200
+ version = "1.0.45"
201
+ source = "registry+https://github.com/rust-lang/crates.io-index"
202
+ checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
203
+ dependencies = [
204
+ "proc-macro2",
205
+ ]
206
+
207
+ [[package]]
208
+ name = "shlex"
209
+ version = "1.3.0"
210
+ source = "registry+https://github.com/rust-lang/crates.io-index"
211
+ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
212
+
213
+ [[package]]
214
+ name = "simd-adler32"
215
+ version = "0.3.9"
216
+ source = "registry+https://github.com/rust-lang/crates.io-index"
217
+ checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
218
+
219
+ [[package]]
220
+ name = "syn"
221
+ version = "2.0.117"
222
+ source = "registry+https://github.com/rust-lang/crates.io-index"
223
+ checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
224
+ dependencies = [
225
+ "proc-macro2",
226
+ "quote",
227
+ "unicode-ident",
228
+ ]
229
+
230
+ [[package]]
231
+ name = "target-lexicon"
232
+ version = "0.13.5"
233
+ source = "registry+https://github.com/rust-lang/crates.io-index"
234
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
235
+
236
+ [[package]]
237
+ name = "thiserror"
238
+ version = "2.0.18"
239
+ source = "registry+https://github.com/rust-lang/crates.io-index"
240
+ checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
241
+ dependencies = [
242
+ "thiserror-impl",
243
+ ]
244
+
245
+ [[package]]
246
+ name = "thiserror-impl"
247
+ version = "2.0.18"
248
+ source = "registry+https://github.com/rust-lang/crates.io-index"
249
+ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
250
+ dependencies = [
251
+ "proc-macro2",
252
+ "quote",
253
+ "syn",
254
+ ]
255
+
256
+ [[package]]
257
+ name = "tracing"
258
+ version = "0.1.44"
259
+ source = "registry+https://github.com/rust-lang/crates.io-index"
260
+ checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
261
+ dependencies = [
262
+ "pin-project-lite",
263
+ "tracing-attributes",
264
+ "tracing-core",
265
+ ]
266
+
267
+ [[package]]
268
+ name = "tracing-attributes"
269
+ version = "0.1.31"
270
+ source = "registry+https://github.com/rust-lang/crates.io-index"
271
+ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
272
+ dependencies = [
273
+ "proc-macro2",
274
+ "quote",
275
+ "syn",
276
+ ]
277
+
278
+ [[package]]
279
+ name = "tracing-core"
280
+ version = "0.1.36"
281
+ source = "registry+https://github.com/rust-lang/crates.io-index"
282
+ checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
283
+ dependencies = [
284
+ "once_cell",
285
+ ]
286
+
287
+ [[package]]
288
+ name = "unicode-ident"
289
+ version = "1.0.24"
290
+ source = "registry+https://github.com/rust-lang/crates.io-index"
291
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
@@ -0,0 +1,29 @@
1
+ [package]
2
+ name = "pdf-rs"
3
+ version = "0.1.0"
4
+ edition = "2024"
5
+ description = "Rust PDF parser with Python bindings and LLM-friendly extraction"
6
+ readme = "README.md"
7
+ repository = "https://github.com/MosRat/pdf-rs"
8
+ keywords = ["pdf", "parser", "markdown", "pyo3"]
9
+ categories = ["parser-implementations"]
10
+
11
+ [lib]
12
+ crate-type = ["rlib", "cdylib"]
13
+
14
+ [[bin]]
15
+ name = "pdf-rs-cli"
16
+ path = "src/main.rs"
17
+
18
+ [dependencies]
19
+ flate2 = "1.1.9"
20
+ memmap2 = "0.9.10"
21
+ mimalloc = { version = "0.1.50", optional = true }
22
+ pyo3 = { version = "0.28.3", features = ["extension-module", "abi3-py39"], optional = true }
23
+ thiserror = "2.0.18"
24
+ tracing = "0.1.44"
25
+
26
+ [features]
27
+ mimalloc = ["dep:mimalloc"]
28
+ python = ["pyo3"]
29
+ pyo3 = ["dep:pyo3"]