Convierte tus documentos Markdown a PDF de forma online y gratuita
La conversión de Markdown a PDF es una de las más demandadas, ya que el formato PDF es universalmente aceptado para compartir documentos con formato fijo.
Estas son las principales razones para convertir Markdown a PDF:
Estas son algunas herramientas online para convertir Markdown a PDF:
Estas son algunas aplicaciones de escritorio para convertir Markdown a PDF:
pandoc archivo.md -o archivo.pdfPara personalizar el estilo:
pandoc archivo.md -o archivo.pdf --pdf-engine=xelatex -V geometry:margin=2cmSi necesitas hacerlo programáticamente:
// Usando marked + html2pdf.js
import { marked } from 'marked';
import html2pdf from 'html2pdf.js';
const html = marked.parse(markdownText);
html2pdf().from(html).save('documento.pdf');Si usas html2pdf.js en el navegador, puedes aplicar estilos CSS al HTML intermedio antes de generar el PDF:
import { marked } from 'marked';
import html2pdf from 'html2pdf.js';
const markdownText = '# Mi documento\n\nContenido del documento...';
const html = marked.parse(markdownText);
// Envolver el HTML con estilos personalizados
const htmlConEstilos = `
<style>
body {
font-family: 'Georgia', serif;
line-height: 1.8;
color: #333;
max-width: 700px;
margin: 0 auto;
}
h1 {
color: #1a1a2e;
border-bottom: 2px solid #e0e0e0;
padding-bottom: 0.5em;
}
h2 {
color: #16213e;
margin-top: 2em;
}
code {
background: #f4f4f4;
padding: 2px 6px;
border-radius: 3px;
font-size: 0.9em;
}
pre {
background: #2d2d2d;
color: #f8f8f2;
padding: 1em;
border-radius: 5px;
overflow-x: auto;
}
blockquote {
border-left: 4px solid #3498db;
margin-left: 0;
padding-left: 1em;
color: #555;
}
</style>
${html}
`;
const opciones = {
margin: 10,
filename: 'documento.pdf',
image: { type: 'jpeg', quality: 0.98 },
html2canvas: { scale: 2 },
jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
};
html2pdf().set(opciones).from(htmlConEstilos).save();Pandoc genera PDFs a través de LaTeX, lo que te da un control tipográfico profesional. Puedes personalizar casi cualquier aspecto del documento usando variables:
pandoc archivo.md -o archivo.pdf \
--pdf-engine=xelatex \
-V geometry:margin=2.5cm \
-V fontsize=12pt \
-V mainfont="Arial" \
--highlight-style=tangoExplicación de cada parámetro:
--pdf-engine=xelatex: Usa XeLaTeX como motor, lo que permite usar cualquier fuente del sistema (necesario para fuentes como Arial o Times New Roman).-V geometry:margin=2.5cm: Establece los márgenes del documento.-V fontsize=12pt: Tamaño de fuente base.-V mainfont="Arial": Fuente principal del texto (requiere XeLaTeX).--highlight-style=tango: Estilo de resaltado para bloques de código (opciones: pygments, tango, espresso, zenburn, kate, monochrome, breezedark, haddock).pandoc archivo.md -o archivo.pdf \
--pdf-engine=xelatex \
-V geometry:margin=2.5cm \
-V fontsize=12pt \
-V mainfont="Noto Serif" \
-V sansfont="Noto Sans" \
-V monofont="Fira Code" \
-V linestretch=1.5 \
-V colorlinks=true \
-V linkcolor=blue \
-V urlcolor=blue \
-V lang=es \
--toc \
--toc-depth=3 \
--number-sectionsVariables adicionales:
linestretch: Interlineado (1.5 es muy legible para documentos largos).colorlinks y linkcolor: Colorear los enlaces en lugar de recuadrarlos.lang=es: Activar la localización en español (guiones de separación, etiquetas como "Tabla de contenidos").--toc: Generar tabla de contenidos automática.--number-sections: Numerar los encabezados (1, 1.1, 1.2, etc.).Este ejemplo crea un botón de descarga en el navegador que convierte Markdown a PDF al hacer clic:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Markdown a PDF</title>
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js"></script>
</head>
<body>
<textarea id="editor" rows="15" cols="80" placeholder="Escribe tu Markdown aquí...">
# Mi documento
Un párrafo con negrita y *cursiva*.
## Sección 1
- Elemento 1
- Elemento 2
- Elemento 3
## Sección 2
> Una cita importante.
```javascript
console.log("Hola mundo");
```
</textarea>
<br>
<button id="btn-descargar">Descargar como PDF</button>
<script>
document.getElementById('btn-descargar').addEventListener('click', function() {
const markdown = document.getElementById('editor').value;
const html = marked.parse(markdown);
// Crear un contenedor temporal con estilos
const contenedor = document.createElement('div');
contenedor.innerHTML = ``;
const opciones = {
margin: 15,
filename: 'documento.pdf',
image: { type: 'jpeg', quality: 0.98 },
html2canvas: { scale: 2, useCORS: true },
jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' },
pagebreak: { mode: ['avoid-all', 'css', 'legacy'] }
};
html2pdf().set(opciones).from(contenedor).save();
});
</script>
</body>
</html>Si no quieres instalar nada en tu equipo, hay varias herramientas web que convierten Markdown a PDF directamente en el navegador:
Dillinger: Editor de Markdown online completo. Permite escribir Markdown con vista previa en tiempo real y exportar directamente a PDF, HTML y documentos con estilos. Soporta sincronización con GitHub, Dropbox y Google Drive.
StackEdit: Editor en el navegador con soporte para Markdown extendido (KaTeX para matemáticas, diagramas UML, partituras musicales). Exporta a PDF a través de su integración con Pandoc. También permite publicar directamente en Blogger, WordPress y GitHub.
Markdown to PDF: Convertidor dedicado exclusivamente a la conversión de Markdown a PDF. Sin registro, sin instalación. Pega tu Markdown o sube un archivo .md y descarga el PDF al instante.
md2pdf: Herramienta ligera y rápida que convierte Markdown a PDF con un diseño limpio. Incluye soporte para resaltado de sintaxis en bloques de código.
Ten en cuenta estos consejos para obtener mejores resultados:
\newpage para forzar un salto de página. En html2pdf.js usa la clase CSS html2pdf__page-break.---
title: "Mi documento"
author: "Tu nombre"
date: "2024-01-15"
---👋 Hola! Soy Edu, me encanta crear cosas y he redactado este tutorial. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirlo en Twitter.
Sígueme en Twitter para estar al día con mi contenido. 😊