Lossless PDF merge and split in Rust — bookmarks, page labels, and named destinations preserved.
use pdfluent::{Sdk, merge::MergeOptions};
let sdk = Sdk::init_with_license("license.json")?;
let doc1 = sdk.open("chapter1.pdf")?;
let doc2 = sdk.open("chapter2.pdf")?;
let doc3 = sdk.open("chapter3.pdf")?;
let opts = MergeOptions::builder()
.preserve_bookmarks(true)
.preserve_page_labels(true)
.linearize(true)
.build();
let merged = sdk.merge(vec![doc1, doc2, doc3], opts)?;
merged.save("book_complete.pdf")?;
println!("Pages: {}, Bookmarks: {}", merged.page_count(), merged.bookmark_count());Run cargo add pdfluent@1.0.0-beta.5 to get started.
Merge multiple PDFs with correct page ordering, bookmark preservation, and page label handling. No lost pages, no reordered content.
Split by page range, by bookmark level, by empty page, or by content pattern (e.g., 'new chapter'). Extract exactly the pages you need.
Merge documents with existing bookmarks. PDFluent merges outline trees correctly — nested bookmarks, named destinations, and cross-document links preserved.
Merge PDFs with different page label formats (Roman, Arabic, alphabetic). Output has correct consolidated page labels.
Merge and split linearised (web-optimised) PDFs without losing the linearisation structure. Output remains web-optimised.
Merge and split password-protected PDFs. Handles user passwords, owner passwords, and permission flags correctly during operations.