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
- Crear desde Markdown — Convertir texto Markdown a PDF
- Crear desde HTML — Convertir HTML a PDF
- Crear desde imágenes — Convertir imágenes a PDF
- Procesamiento por lotes — Patrones de procesamiento paralelo