Live feature coverage against the Adobe-Acrobat / Apple-Preview surface is tracked in the port report, where status is derived from source. This page covers the engine's structure, not the feature count.
Module map
| module | implemented now |
|---|---|
| doc | open · save · from_bytes · to_bytes · version · metadata + XMP · merge · overlay_page · n_up · outline/bookmarks · layers (OCG/OCMD) · portfolio · repair · preflight · accessibility_check · tag_pdf_ua · optimize · compare · named destinations · build_toc_page |
| page | page_count · page_numbers · rotate_page/rotate_all · delete_pages · reorder_pages · swap_pages · move_page · extract_pages · insert_pages/replace_pages · crop_page · resize_all_pages · page boxes · add_header_footer · bates_number · watermark_text/watermark_image · split_by_bookmarks/_count/_size/_ranges/_odd_even · booklet_order · flip_page · duplicate_pages · split_page_grid · add_printer_marks · transitions |
| linearize | linearize — self-contained fast-web-view writer: /Linearized dict, dual /Prev-linked xref, per-page hint stream |
| text | extract_text · extract_all_text · extract_text_in_region · search · add_text · add_text_lines (multi-line box, page-rotation aware, any embedded face + fill colour) · edit_text · find_replace_text · add_image/replace_image |
| ocr | ocr_page · ocr_page_words · make_searchable — pure-Rust template match against a compiled-in bitmap font, no model or network |
| render | render_page · export_page_png · page_bitmap · page_thumbnail/generate_thumbnails · print_to_pdf · to_grayscale · invert_colors · adjust_image/adjust_page/stylize_page · auto_crop_margins · detect_skew_angle/deskew_page · binarize · split_scanned_images · extract_images · downsample_images · contact_sheet · page_visual_difference/mark_visual_differences · flatten_transparency · flatten_annotations · color_separations · list_inks/ink_coverage · stamp_rgba |
| annot | add_note · add_markup · add_ink/erase_ink_at · undo_last_annot · list_annotations + per-annotation property setters · apply_redactions · links (add_link · goto · remote · launch · named action) · add_callout · add_measure · attach_file · highlight_search · FDF/XFDF/CSV comment import-export |
| media | add_sound · add_screen · add_movie · add_3d · add_rich_media |
| form | has_acroform · form_fields · field_widgets · set_field · create_text_field/checkbox/choice/radio_group/signature/push_button · field property setters · validate_fields · reset_form · clear_signature · add_submit_button · flatten_form · FDF/XFDF import-export · XFA (has_xfa · xfa_datasets · set_xfa_datasets · export_xfa) |
| sign | is_signed · signature_count · has_permissions_dict · add_typed_signature · sign/sign_visible/sign_image · certify · add_timestamp · verify_signatures/verify_full |
| security | is_encrypted · permissions · encrypt · encrypt_aes256(_with_permissions) · encrypt_pubkey(_multi) · decrypt · decrypt_pubkey · redact/redact_search/redact_regex · verify_redaction · sanitize |
| convert | from_jpeg_images · export_html/export_markdown/export_docx/export_xlsx/export_pptx · to_pdf_a · to_pdf_x · convert_to_cmyk · set_output_intent |
| font | add_text_with_font (Type0 subset, /ToUnicode) · list_fonts · extract_fonts · unembed_fonts · system_fonts |
| layout | reading_order · text_run_boxes · search_run_rects · restyle_text · move_text · export_page_svg · reflow · auto_tag · auto_link_urls |
| insight | extract_tables/extract_table_cells · auto_outline · word_diff · structure_diff · similarity_score · scan_pii/redact_pii · hidden_content_audit · content_fingerprint · readability_stats |
| livecalc | live_table · live_table_view · live_table_set · live_table_preview — dirty-subgraph recalc written back into the page's own content stream |
| actions | apply_actions — replay a serializable Action batch over a document |
| barcode | add_barcode (Code 128-B) · add_qr_code · add_data_matrix |
| js | run_javascript · recalculate_fields — boa_engine with a minimal Acrobat form JS API |
| prepress | document_id/regenerate_document_id · set_trapped · set_reading_direction · page_boxes/set_all_page_boxes · set_layer_locked · field Format/Keystroke/Validate JS + list_field_actions · set_field_rich_value · list_output_intents · object_stats |
| fidelity | copy_fidelity_audit — per-glyph text-recoverability map and a weighted document copy-fidelity score |
| vcs | vcs_commit/log/diff/checkout/bisect · vcs_blame/vcs_blame_lines · vcs_branch/vcs_branches/vcs_switch · vcs_merge/vcs_merge_resolve (three-way structural merge) · number_blame · edit_value_tracked |
| redact_audit | redaction_leak_audit — painter's-model scan for text a later opaque fill covers but leaves extractable, plus unjustified invisible text |
| revision | revision_history · revision_bytes — walk the incremental-update layers and materialize any prior revision's exact bytes |
| formdetect | detect_form_fields · auto_create_form_fields — Acrobat’s Prepare Form pass over a flat page |
| tags | structure_tree · set_struct_tag · set_struct_alt · move_struct_element · delete_struct_element — the Tags panel over the logical structure hierarchy |
| review | reply_to_annotation · set_annotation_status · review_comments · annotation_thread · build_comment_summary_pages |
| geo | add_geo_viewport · geo_viewports · geo_point · geo_distance — the Geospatial Location tool |
| lineage | vcs_relate · vcs_pull — cross-file lineage between two copies of the same document |
| scrub | vcs_history_audit · verify_redaction_deep · vcs_scrub · vcs_verify — history-aware redaction, out of the current page and out of every retained revision |
| xmerge | merge_docx3 — cross-format 3-way merge of a PDF against the DOCX it came from |
| commands | the generated command-name list the automation bus enumerates, drift-guarded against zpdf_invoke’s match arms |
tauri_plugin (feature tauri) | Tauri v2 integration — the embeddable PDF backend |
| lib | the Pdf type and the module wiring every surface above hangs off |
Verification
339 integration tests across the thirteen files in tests/ — engine.rs, formdetect.rs, geo.rs, livecalc.rs, prepress.rs, review.rs, revision.rs, tags.rs, text_runs.rs, vcs_lineage.rs, vcs_rewrite.rs, vcs_scrub.rs and xmerge.rs — build valid PDFs in memory with lopdf and drive the public Pdf API: a Unicode metadata save/reopen round-trip, rotation normalization and out-of-range rejection, annotation persistence and the markup family's subtypes, form and XFA fill round-trips, the document-timestamp digest binding over its /ByteRange, incremental-update revision reconstruction, and per-revision number blame. A further 59 unit tests sit beside the code they cover — including the copy-fidelity and redaction-leak audits, and a drift guard (commands_cover_invoke_arms) that fails if the published command list and zpdf_invoke's match arms diverge.
The only binary fixtures are compiled in with include_bytes!: an AES-256 (V5/R6) file written by qpdf and a public-key-encrypted file written by pyHanko, so the encryption paths are validated against outside implementations rather than only against themselves, plus a public-domain TTF for the font-embedding tests. Nothing is fetched and nothing is shelled out to, so the suite runs identically in a headless Linux CI.