rust 1,847,280 · typescript 232,434 · javascript 131,101 · python 19,227 · 6,362 files · digest 755e2ee30522 · built in 2.3 s · crystals off
cre8-util-pdf crates cargo crate
A pure-Rust PDF reader for the documents CRE8 ingests: classic and stream cross-reference tables, object streams, incremental updates and damaged-file recovery, the Standard security handler (RC4, AES-128, AES-256 R6) with an empty or supplied password, Flate/LZW/ASCII/run-length filters with predictors, and a text layer of positioned runs decoded through ToUnicode CMaps and simple encodings. A table module recovers a printed spreadsheet's grid from its header line. No C library and no network; builds for wasm.
Neighbourhood
Left: crates that declare this one. Right: crates it declares (dev-dependencies included). Edge width grows with resolved calls.
Files
File call graph
Resolved calls between this crate's files, callers left of callees.
Heaviest functions
By call-graph weight (PageRank; 1.0 is the average function). 161 functions in all.
| function | kind | lines | cyclomatic | callers | callees | weight | crystal |
|---|---|---|---|---|---|---|---|
| Object::as_f64src/object.rs:57 | method | 7 | 3 | 13 | 0 | 8.3 | |
| Object::as_arraysrc/object.rs:82 | method | 6 | 2 | 26 | 0 | 5.9 | |
| is_whitesrc/parse.rs:8 | fn | 3 | 1 | 6 | 0 | 3.6 | |
| malformedsrc/lib.rs:73 | fn | 3 | 1 | 18 | 0 | 3.5 | |
| Object::as_i64src/object.rs:48 | method | 7 | 5 | 11 | 0 | 2.2 | |
| Dict::namesrc/object.rs:158 | method | 3 | 1 | 5 | 2 | 2.1 | |
| Document::open_with_passwordsrc/document.rs:86 | method | 20 | 5 | 2 | 6 | 2.1 | |
| cbc_decryptsrc/crypt.rs:318 | fn | 15 | 3 | 1 | 0 | 2 | |
| rc4src/crypt.rs:278 | fn | 20 | 3 | 4 | 0 | 1.9 | |
| Parser::token_at_depthsrc/parse.rs:94 | method | 57 | 19 | 3 | 10 | 1.9 | |
| Object::as_namesrc/object.rs:66 | method | 6 | 2 | 4 | 0 | 1.9 | |
| Parser::wordsrc/parse.rs:73 | method | 5 | 1 | 4 | 2 | 1.8 | |
| hex_valuesrc/parse.rs:326 | fn | 8 | 4 | 2 | 0 | 1.7 | |
| aes_cbc_decryptsrc/crypt.rs:334 | fn | 8 | 4 | 2 | 1 | 1.7 | |
| Parser::regularsrc/parse.rs:63 | method | 7 | 3 | 3 | 2 | 1.7 | |
| Parser::skip_whitesrc/parse.rs:48 | method | 13 | 6 | 6 | 1 | 1.7 | |
| Document::opensrc/document.rs:81 | method | 3 | 1 | 10 | 1 | 1.7 | |
| is_delimitersrc/parse.rs:13 | fn | 3 | 1 | 4 | 0 | 1.7 | |
| Document::getsrc/document.rs:197 | method | 7 | 3 | 5 | 2 | 1.6 | |
| Parser::newsrc/parse.rs:35 | method | 3 | 1 | 10 | 0 | 1.6 | |
| Document::object_streamsrc/document.rs:271 | method | 34 | 3 | 2 | 9 | 1.6 | |
| Object::as_dictsrc/object.rs:90 | method | 7 | 3 | 11 | 0 | 1.6 | |
| page_runssrc/text.rs:360 | fn | 26 | 7 | 1 | 5 | 1.5 | |
| findsrc/parse.rs:440 | fn | 6 | 3 | 4 | 0 | 1.5 | |
| linessrc/text.rs:390 | fn | 16 | 5 | 2 | 0 | 1.4 | |
| CMap::parsesrc/font.rs:73 | method | 101 | 31 | 4 | 8 | 1.4 | |
| Dict::getsrc/object.rs:129 | method | 3 | 1 | 1 | 0 | 1.4 | |
| Dict::is_typesrc/object.rs:163 | method | 3 | 1 | 6 | 1 | 1.3 | |
| Document::resolvesrc/document.rs:206 | method | 13 | 4 | 5 | 2 | 1.3 | |
| Parser::tokensrc/parse.rs:90 | method | 3 | 1 | 5 | 1 | 1.2 | |
| ObjRef::newsrc/object.rs:14 | method | 3 | 1 | 6 | 0 | 1.2 | |
| Document::page_runssrc/document.rs:234 | method | 4 | 1 | 3 | 1 | 1.2 | |
| Document::load_atsrc/document.rs:257 | method | 13 | 5 | 1 | 5 | 1.2 | |
| Document::load_compressedsrc/document.rs:306 | method | 7 | 3 | 1 | 1 | 1.2 | |
| paddedsrc/crypt.rs:167 | fn | 7 | 1 | 2 | 0 | 1.2 | |
| Parser::unsignedsrc/parse.rs:80 | method | 7 | 3 | 5 | 1 | 1.1 | |
| Decryptor::decryptsrc/crypt.rs:144 | method | 8 | 4 | 2 | 3 | 1.1 | |
| Parser::objectsrc/parse.rs:167 | method | 7 | 3 | 5 | 3 | 1.1 | |
| Document::page_textsrc/document.rs:240 | method | 3 | 1 | 4 | 2 | 1.1 | |
| aes128_cbc_encryptsrc/crypt.rs:299 | fn | 18 | 3 | 1 | 0 | 1 |
Outside the workspace
aes md-5 miniz_oxide sha2