En este tutorial, aprenderás cómo crear un sencillo conversor en línea que te permitirá cargar un archivo PDF y convertir su primera página en una imagen. Utilizaremos PHP para el procesamiento del formulario y la conversión, y la librería spatie/pdf-to-image para llevar a cabo la conversión.
Paso 1: Preparación del Entorno
Configura tu entorno: Asegúrate de tener un servidor web y PHP instalados en tu sistema.
Crea una Carpeta: Crea un nuevo directorio en tu servidor web y nómbralo como desees. Todos los archivos del tutorial estarán en este directorio.
Paso 2: Creación del Formulario
Crea un archivo llamado index.php en el directorio que creaste. Este archivo contendrá un formulario que permitirá a los usuarios cargar un archivo PDF.
...
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
formulario
</button>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5" id="exampleModalLabel">Modal title</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<form action="convert.php" method="post" enctype="multipart/form-data">
<div class="mb-3">
<label for="titulo" class="form-label">Libro</label>
<input type="file" class="form-control" id="titulo" name="titulo" accept=".pdf">
<div id="previewContainer"></div>
</div>
<div class="mb-3">
<label for="tituloImagen" class="form-label">Imagen</label>
<input type="text" class="form-control" id="tituloImagen" name="tituloImagen">
</div>
<button id="generarDescargar">Guardar Imagen</button>
</form>
</div>
</div>
</div>
</div>
Explicación: Creamos un formulario que envía los datos al archivo convert.php usando el método POST. El formulario contiene un campo para seleccionar un archivo PDF.
Paso 3: Conversión del PDF a Imagen
Crea un archivo llamado convert.php en el mismo directorio. Este archivo se encargará de procesar la conversión del PDF a imagen.
<script>
document.getElementById("titulo").addEventListener("change", function(event) {
const file = event.target.files[0];
const fileReader = new FileReader();
fileReader.onload = function() {
const typedArray = new Uint8Array(this.result);
pdfjsLib.getDocument(typedArray).promise.then(function(pdfDocument) {
pdfDocument.getPage(1).then(function(page) {
const canvas = document.createElement("canvas");
const context = canvas.getContext("2d");
const viewport = page.getViewport({
scale: 0.2
});
canvas.width = viewport.width;
canvas.height = viewport.height;
const renderContext = {
canvasContext: context,
viewport: viewport
};
// Renderizar la página en el lienzo
page.render(renderContext).promise.then(function() {
const previewContainer = document.getElementById(
"previewContainer");
previewContainer.innerHTML = ""; // Limpiar el contenedor
previewContainer.appendChild(canvas);
// Obtener el nombre del archivo PDF
const pdfFileName = file.name;
// Mostrar el título de la imagen en el campo de entrada
const tituloImagenInput = document.getElementById(
"tituloImagen");
tituloImagenInput.value = pdfFileName.replace(/\.[^/.]+$/,
"") + ".png";
// Guardar automáticamente la imagen en el servidor
guardarImagen();
});
});
});
};
fileReader.readAsArrayBuffer(file);
});
</script>
Explicación: En este archivo, procesamos el formulario que se envió desde index.php. Usamos la librería spatie/pdf-to-image para cargar el archivo PDF, seleccionar la primera página y guardarla como una imagen llamada output.jpg. Luego, mostramos la imagen generada en la página.
Paso 4: Descargar las Librerías
En la cabecera del documento coloca este CDN o descarga uno mas actual
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.10.377/pdf.min.js"></script>
¡Felicidades! Ahora tienes todo en su lugar para convertir la primera página de un PDF a una imagen. Abre tu navegador y visita http://localhost/tu-directorio/index.php para ver y probar tu conversor en acción.

0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias