Готово за секунди.
Одна установка. Три рядки коду.
$ cargo add pdf_oxideuse pdf_oxide::PdfDocument;
let mut doc = PdfDocument::open("paper.pdf")?;
let text = doc.extract_text(0)?;
let images = doc.extract_images(0)?;Одна бібліотека.
Створення|Редагування|Витягування
Усі операції з PDF в одній залежності.
Без обгорток, без викликів підпроцесів, без середовищ C/C++/Java.
Створення
Створення PDF з будь-якого формату.
- MarkdownКонвертація Markdown у піксельно-точні PDF із заголовками, списками, таблицями та блоками коду.
- HTMLПеретворення HTML-розмітки на структуровані PDF-документи з повною підтримкою CSS-макетів.
- ЗображенняОдно- та багатосторінкові PDF з PNG, JPEG та TIFF з автопідбором розміру.
- QR & BarcodesCode128, EAN-13, UPC-A та QR-коди з налаштовуваним рівнем корекції помилок.
- Builder APIFluent-ланцюжок PdfBuilder для розміру сторінки, полів, шрифтів, метаданих та заголовків.
- ФормиТекстові поля, чекбокси, радіокнопки, випадаючі списки, штампи та водяні знаки.
Редагування
Зміна будь-якої частини існуючого PDF.
- DOM EditingПошук тексту, заміна вмісту, зміна стилів — навігація по PDF як по веб-сторінці.
- СторінкиОбертання, обрізка, об'єднання документів, витяг діапазонів сторінок та переупорядкування.
- ФормиОтримання та встановлення значень полів, додавання або видалення полів, зведення до статичного вмісту.
- АнотаціїДодавання виділень, приміток та посилань. Вибіркова зміна або зведення.
- ЗображенняПереміщення, зміна розміру та заміна вбудованих зображень з точними межами.
- БезпекаШифрування AES-256, паролі та детальні прапорці дозволів.
Витягування
Витяг усього з будь-якого PDF.
- ТекстПовносторінковий текст, стилізовані фрагменти з метаданими шрифтів або посимвольні позиції.
- ЗображенняПотоки вмісту, вкладені Form XObject та інлайн-зображення з колірними просторами.
- MarkdownЧистий Markdown або HTML з визначенням заголовків та збереженням таблиць.
- ФормиУсі значення та типи полів. Експорт у FDF або XFDF. Аналіз XFA.
- МетаданіXMP, Dublin Core, мітки сторінок, каталог та словники трейлерів.
- ПошукПовнотекстовий пошук з регулярними виразами, без урахування регістру та по цілих словах.
У 5 разів швидше за будь-яку альтернативу.
Заміряно на 3 830 реальних PDF з 3 публічних тестових наборів.
Node.js, Go, and C# share the same Rust core — expect matching numbers.
| Бібліотека | Мова | Середнє | p99 | Успішність | Ліцензія |
|---|---|---|---|---|---|
| PDF Oxide | 7 мов | 0.8ms | 9ms | 100% | MIT |
| PyMuPDF | Python | 4.6ms | 28ms | 99.3% | AGPL-3.0 |
| oxidize_pdf | Rust | 13.5ms | 11ms | 99.1% | MIT |
| pypdfium2 | Python | 4.1ms | 42ms | 99.2% | Apache-2.0 |
| pdfminer | Python | 16.8ms | 124ms | 98.8% | MIT |
| pdfplumber | Python | 23.2ms | 189ms | 98.8% | MIT |
| pypdf | Python | 12.1ms | 97ms | 98.4% | BSD-3 |
| unpdf | Rust | 2.8ms | 10ms | 95.1% | MIT |
| pdf_extract | Rust | 4.08ms | 37ms | 91.5% | Apache-2.0 |
| lopdf | Rust | 0.3ms | 2ms | 80.2% | MIT |
Виміряно на 3 830 PDF (veraPDF, Mozilla pdf.js, DARPA SafeDocs).
Один потік, без прогріву, таймаут 60 с.
100% надійність. Без сюрпризів.
Протестовано на 3 830 PDF з трьох незалежних публічних тестових наборів.
Ніяких панік, таймаутів чи падінь.
без жодного збою
порівняно з PyMuPDF та pypdfium2
коректно відхилено
Корпус охоплює всі версії PDF (1.0–2.0), зашифровані файли, пошкоджені документи, кодування CJK та крайові випадки безпеки DARPA SafeDocs, створені для обвалення вразливих парсерів.