Готово за секунды.
Одна установка. Три строки кода.
$ 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 из трёх независимых публичных тестовых наборов.
Никаких паник, таймаутов и падений.
без единого сбоя
vs PyMuPDF и pypdfium2
корректно отклонены
Корпус охватывает все версии PDF (1.0–2.0), зашифрованные файлы, повреждённые документы, кодировки CJK и краевые кейсы безопасности DARPA SafeDocs, спроектированные для обрушения уязвимых парсеров.