Skip to content

Конвертация офисных документов в PDF

Конвертация документов Microsoft Office (Word, Excel, PowerPoint) в PDF без установки Microsoft Office или LibreOffice. PDF Oxide напрямую парсит формат OOXML и создаёт PDF-вывод.

Быстрый пример

Python

from pdf_oxide import OfficeConverter

# Auto-detect format from extension
pdf = OfficeConverter.convert("report.docx")
pdf.save("report.pdf")

Rust

use pdf_oxide::converters::office::OfficeConverter;

let converter = OfficeConverter::new();
let pdf_bytes = converter.convert("report.docx")?;
std::fs::write("report.pdf", pdf_bytes)?;

Поддерживаемые форматы

Format Extension Описание
DOCX .docx Документы Word — абзацы, заголовки, списки, форматирование текста
XLSX .xlsx, .xls Таблицы Excel — несколько листов, автоматический размер столбцов, типы ячеек
PPTX .pptx Презентации PowerPoint — слайды, заголовки, текстовые блоки

Документы Word (DOCX)

Конвертация документов Word с сохранением заголовков, абзацев, списков и форматирования текста (bold, italic, underline, colors, font sizes).

Python

from pdf_oxide import OfficeConverter

pdf = OfficeConverter.from_docx("document.docx")
pdf.save("document.pdf")

Rust

use pdf_oxide::converters::office::OfficeConverter;

let converter = OfficeConverter::new();
let pdf_bytes = converter.convert_docx("document.docx")?;
std::fs::write("document.pdf", pdf_bytes)?;

Из байтов

Python

from pdf_oxide import OfficeConverter

with open("document.docx", "rb") as f:
    pdf = OfficeConverter.from_docx_bytes(f.read())
pdf.save("document.pdf")

Rust

let docx_bytes = std::fs::read("document.docx")?;
let converter = OfficeConverter::new();
let pdf_bytes = converter.convert_docx_bytes(&docx_bytes)?;
std::fs::write("document.pdf", pdf_bytes)?;

Поддерживаемые возможности DOCX

  • Абзацы с выравниванием (left, center, right, justified)
  • Headings (Heading 1–9 styles)
  • Форматирование текста: жирный, курсив, подчёркивание, зачёркивание
  • Размеры шрифтов и цвета
  • Нумерованные и маркированные списки с вложенностью
  • Извлечение метаданных (заголовок, автор из docProps/core.xml)

Электронные таблицы Excel (XLSX)

Конвертация таблиц в PDF с автоматическим расчётом ширины столбцов и поддержкой нескольких листов. Каждый лист отображается как отдельный раздел.

Python

from pdf_oxide import OfficeConverter

pdf = OfficeConverter.from_xlsx("data.xlsx")
pdf.save("data.pdf")

Rust

let converter = OfficeConverter::new();
let pdf_bytes = converter.convert_xlsx("data.xlsx")?;
std::fs::write("data.pdf", pdf_bytes)?;

Поддерживаемые возможности XLSX

  • Рендеринг нескольких листов с заголовками
  • Типы ячеек: строки, целые числа, вещественные числа, логические значения, даты, ошибки
  • Автоматический расчёт ширины столбцов
  • Автоматические разрывы страниц при превышении доступного пространства

Презентации PowerPoint (PPTX)

Конвертация презентаций в PDF. Каждый слайд становится страницей с извлечёнными заголовками и текстовыми блоками.

Python

from pdf_oxide import OfficeConverter

pdf = OfficeConverter.from_pptx("slides.pptx")
pdf.save("slides.pdf")

Rust

let converter = OfficeConverter::new();
let pdf_bytes = converter.convert_pptx("slides.pptx")?;
std::fs::write("slides.pdf", pdf_bytes)?;

Настройка (Rust)

Настройка размера страницы, полей и шрифтов с помощью OfficeConfig:

use pdf_oxide::converters::office::{OfficeConverter, OfficeConfig};

let config = OfficeConfig::a4(); // A4 page size
let converter = OfficeConverter::with_config(config);
let pdf_bytes = converter.convert_docx("document.docx")?;

Поля OfficeConfig

Field Type Default Описание
page_size PageSize Letter Размеры страницы
margins Margins 1 inch all sides Поля страницы в пунктах (72pt = 1 дюйм)
embed_fonts bool false Встраивать ли шрифты
default_font String "Helvetica" Резервный шрифт
default_font_size f32 11.0 Размер текста по умолчанию в пунктах
line_height f32 1.2 Множитель высоты строки
include_images bool true Включать встроенные изображения

Предустановки размера страницы

let config = OfficeConfig::letter(); // 8.5 × 11 inches (default)
let config = OfficeConfig::a4();     // 210 × 297 mm

Пользовательские поля

use pdf_oxide::converters::office::Margins;

let mut config = OfficeConfig::letter();
config.margins = Margins::uniform(36.0);  // 0.5 inch margins
config.margins = Margins::none();          // No margins

Пакетная конвертация

Python

from pdf_oxide import OfficeConverter
from pathlib import Path

office_dir = Path("documents/")
output_dir = Path("pdfs/")
output_dir.mkdir(exist_ok=True)

extensions = {".docx", ".xlsx", ".pptx"}

for doc_path in office_dir.iterdir():
    if doc_path.suffix.lower() in extensions:
        pdf = OfficeConverter.convert(str(doc_path))
        pdf.save(str(output_dir / doc_path.with_suffix(".pdf").name))
        print(f"Converted: {doc_path.name}")

Rust

use pdf_oxide::converters::office::OfficeConverter;
use std::fs;

let converter = OfficeConverter::new();

for entry in fs::read_dir("documents/")? {
    let path = entry?.path();
    match path.extension().and_then(|e| e.to_str()) {
        Some("docx" | "xlsx" | "pptx") => {
            let pdf_bytes = converter.convert(&path)?;
            let out = format!("pdfs/{}.pdf", path.file_stem().unwrap().to_str().unwrap());
            fs::write(&out, pdf_bytes)?;
            println!("Converted: {}", path.display());
        }
        _ => {}
    }
}

Справочник API

Python — OfficeConverter

Метод Возвращает Описание
OfficeConverter.convert(path) Pdf Автоопределение формата и конвертация
OfficeConverter.from_docx(path) Pdf Конвертация файла DOCX
OfficeConverter.from_docx_bytes(data) Pdf Конвертация DOCX из байтов
OfficeConverter.from_xlsx(path) Pdf Конвертация файла XLSX
OfficeConverter.from_xlsx_bytes(data) Pdf Конвертация XLSX из байтов
OfficeConverter.from_pptx(path) Pdf Конвертация файла PPTX
OfficeConverter.from_pptx_bytes(data) Pdf Конвертация PPTX из байтов

Все методы возвращают объект Pdf. Вызовите pdf.save("output.pdf") или pdf.to_bytes() для получения результата.

Rust — OfficeConverter

Метод Возвращает Описание
OfficeConverter::new() OfficeConverter Создать с конфигурацией по умолчанию
OfficeConverter::with_config(config) OfficeConverter Создать с пользовательской конфигурацией
convert(path) Result<Vec<u8>> Автоопределение формата и конвертация
convert_docx(path) Result<Vec<u8>> Конвертация файла DOCX
convert_docx_bytes(bytes) Result<Vec<u8>> Конвертация DOCX из байтов
convert_xlsx(path) Result<Vec<u8>> Конвертация файла XLSX
convert_xlsx_bytes(bytes) Result<Vec<u8>> Конвертация XLSX из байтов
convert_pptx(path) Result<Vec<u8>> Конвертация файла PPTX
convert_pptx_bytes(bytes) Result<Vec<u8>> Конвертация PPTX из байтов

Связанные страницы