View file PDFXpress/convert.php

File size: 1.87Kb
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['fileToUpload'])) {
    $targetDir = "uploads/";
    $targetFile = $targetDir . basename($_FILES['fileToUpload']['name']);
    $uploadOk = 1;
    $fileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));

    if ($_FILES['fileToUpload']['size'] > 5000000) {
        header('Location: error.php?message=El archivo es demasiado grande. Máximo 5MB.');
        exit();
    }

    if (!in_array($fileType, ["jpg", "png", "jpeg", "gif", "docx", "xlsx"])) {
        header('Location: error.php?message=Tipo de archivo no permitido.');
        exit();
    }

    if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $targetFile)) {
        $outputFile = convertToPDF($targetFile);
        header('Location: success.php?file=' . urlencode($outputFile));
        exit();
    } else {
        header('Location: error.php');
        exit();
    }
}

function convertToPDF($file) {
    require('fpdf/fpdf.php');
    require('phpword/src/PhpWord/Autoloader.php');
    \PhpOffice\PhpWord\Autoloader::register();

    $pdf = new FPDF();
    $pdf->AddPage();
    $fileType = strtolower(pathinfo($file, PATHINFO_EXTENSION));

    if (in_array($fileType, ['jpg', 'jpeg', 'png', 'gif'])) {
        $pdf->Image($file, 10, 10, 180);
    } elseif ($fileType == 'docx') {
        $phpWord = \PhpOffice\PhpWord\IOFactory::load($file);
        $pdf->SetFont('Arial', '', 12);

        foreach ($phpWord->getSections() as $section) {
            foreach ($section->getElements() as $element) {
                if (method_exists($element, 'getText')) {
                    $pdf->MultiCell(0, 10, $element->getText());
                }
            }
        }
    }

    $outputFile = 'uploads/' . pathinfo($file, PATHINFO_FILENAME) . '.pdf';
    $pdf->Output('F', $outputFile);
    return $outputFile;
}
?>