Skip to content

Conversión de Office

Convierta documentos de Microsoft Office (Word, Excel, PowerPoint) a PDF sin tener Microsoft Office o LibreOffice instalado. PDF Oxide analiza el formato OOXML directamente y produce salida PDF.

Ejemplo rápido

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)?;

Formatos soportados

Format Extension Descripción
DOCX .docx Documentos Word — párrafos, encabezados, listas, formato de texto
XLSX .xlsx, .xls Hojas de cálculo Excel — multi-hoja, columnas auto-dimensionadas, tipos de celda
PPTX .pptx Presentaciones PowerPoint — diapositivas, títulos, cuadros de texto

Documentos Word (DOCX)

Convierta documentos Word preservando encabezados, párrafos, listas y formato de texto (negrita, cursiva, subrayado, colores, tamaños de fuente).

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)?;

Desde 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)?;

Características DOCX soportadas

  • Párrafos con alineación (izquierda, centro, derecha, justificado)
  • Encabezados (estilos Heading 1–9)
  • Formato de texto: negrita, cursiva, subrayado, tachado
  • Tamaños de fuente y colores
  • Listas numeradas y con viñetas con anidamiento
  • Extracción de metadatos (título, autor de docProps/core.xml)

Hojas de cálculo Excel (XLSX)

Convierta hojas de cálculo a PDF con anchos de columna calculados automáticamente y soporte multi-hoja. Cada hoja se renderiza como una sección separada.

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)?;

Características XLSX soportadas

  • Renderizado multi-hoja con títulos de hojas
  • Tipos de celda: cadenas, enteros, flotantes, booleanos, fechas, errores
  • Cálculo automático de ancho de columnas
  • Saltos de página automáticos cuando el contenido excede el espacio disponible

Presentaciones PowerPoint (PPTX)

Convierta presentaciones a PDF. Cada diapositiva se convierte en una página con títulos y cuadros de texto extraídos.

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)?;

Configuración (Rust)

Personalice el tamaño de página, márgenes y fuentes usando 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")?;

Campos de OfficeConfig

Campo Tipo Predeterminado Descripción
page_size PageSize Letter Dimensiones de página
margins Margins 1 inch all sides Márgenes de página en puntos (72pt = 1 inch)
embed_fonts bool false Si incrustar fuentes
default_font String "Helvetica" Fuente de respaldo
default_font_size f32 11.0 Tamaño de texto predeterminado en puntos
line_height f32 1.2 Multiplicador de altura de línea
include_images bool true Incluir imágenes embebidas

Presets de tamaño de página

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

Márgenes personalizados

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

Conversión por lotes

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());
        }
        _ => {}
    }
}

Referencia de API

Python — OfficeConverter

Método Retorna Descripción
OfficeConverter.convert(path) Pdf Auto-detectar formato y convertir
OfficeConverter.from_docx(path) Pdf Convertir archivo DOCX
OfficeConverter.from_docx_bytes(data) Pdf Convertir DOCX desde bytes
OfficeConverter.from_xlsx(path) Pdf Convertir archivo XLSX
OfficeConverter.from_xlsx_bytes(data) Pdf Convertir XLSX desde bytes
OfficeConverter.from_pptx(path) Pdf Convertir archivo PPTX
OfficeConverter.from_pptx_bytes(data) Pdf Convertir PPTX desde bytes

Todos los métodos retornan un objeto Pdf. Llame a pdf.save("output.pdf") o pdf.to_bytes() para obtener el resultado.

Rust — OfficeConverter

Método Retorna Descripción
OfficeConverter::new() OfficeConverter Crear con configuración predeterminada
OfficeConverter::with_config(config) OfficeConverter Crear con configuración personalizada
convert(path) Result<Vec<u8>> Auto-detectar formato y convertir
convert_docx(path) Result<Vec<u8>> Convertir archivo DOCX
convert_docx_bytes(bytes) Result<Vec<u8>> Convertir DOCX desde bytes
convert_xlsx(path) Result<Vec<u8>> Convertir archivo XLSX
convert_xlsx_bytes(bytes) Result<Vec<u8>> Convertir XLSX desde bytes
convert_pptx(path) Result<Vec<u8>> Convertir archivo PPTX
convert_pptx_bytes(bytes) Result<Vec<u8>> Convertir PPTX desde bytes

Páginas relacionadas