thinkphp6+bootstrap实现pdf转word

thinkphp6+bootstrap实现pdf转word

thinkphp6+bootstrap实现pdf转word
首先,需要安装和配置ThinkPHP6和Bootstrap。

在ThinkPHP6中,可以创建一个控制器来处理PDF转Word的功能。可以使用第三方库如spatie/pdf-to-text来进行PDF解析,然后将解析后的文本保存为Word格式的文件。

在控制器中,可以编写一个方法来处理PDF转Word的逻辑。首先,需要接收上传的PDF文件,并保存到服务器上。然后,使用spatie/pdf-to-text库解析PDF文件,将解析后的文本保存为Word格式的文件。最后,返回生成的Word文件的下载链接给前端。

在前端使用Bootstrap,可以创建一个上传表单,使用户可以选择上传PDF文件。然后,使用Ajax将选择的文件发送给后端进行处理。在接收到后端返回的下载链接后,可以使用JavaScript生成一个下载链接,使用户可以点击下载转换后的Word文件。

直接上代码

控制器代码

<?php
namespace appcontroller;

use thinkfacadeFilesystem;
use SpatiePdfToTextPdf;
use thinkfacadeView;

class PdfController
{
    public function index()
    {
        return View::fetch('pdf/index');
    }

    public function convert()
    {
        // 获取上传的PDF文件
        $file = request()->file('pdf');

        // 保存PDF文件到服务器
        $savePath = 'uploads/pdf/';
        $info = $file->validate(['ext'=>'pdf'])->move($savePath);
        if (!$info) {
            return json(['code' => 0, 'msg' => $file->getError()]);
        }

        // 解析PDF文件并保存为Word格式
        $pdfPath = $savePath . $info->getSaveName();
        $wordPath = 'uploads/word/' . $info->getFilenameWithoutExtension() . '.docx';
        $pdf = new Pdf();
        $pdf->setPdf($pdfPath);
        $text = $pdf->text();
        file_put_contents($wordPath, $text);

        // 返回生成的Word文件的下载链接
        $downloadUrl = request()->domain() . '/' . $wordPath;
        return json(['code' => 1, 'msg' => '转换成功', 'url' => $downloadUrl]);
    }
}

前端html

<!DOCTYPE html>
<html>
<head>
    <title>PDF转Word</title>
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
    <div class="container mt-5">
        <h2>PDF转Word</h2>
        <form id="uploadForm" method="post" enctype="multipart/form-data">
            <div class="form-group">
                <label for="pdf">选择PDF文件:</label>
                <input type="file" class="form-control-file" id="pdf" name="pdf">
            </div>
            <button type="submit" class="btn btn-primary">转换</button>
        </form>
        <div id="result" class="mt-3" style="display: none;">
            <h4>转换结果:</h4>
            <p id="downloadUrl"></p>
        </div>
    </div>

    <script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js"></script>
    <script>
        $(document).ready(function() {
            $('#uploadForm').submit(function(e) {
                e.preventDefault();
                var formData = new FormData(this);
                $.ajax({
                    url: '/pdf/convert',
                    type: 'POST',
                    data: formData,
                    dataType: 'json',
                    cache: false,
                    contentType: false,
                    processData: false,
                    success: function(response) {
                        if (response.code === 1) {
                            $('#result').show();
                            $('#downloadUrl').html('<a href="' + response.url + '">点击下载转换后的Word文件</a>');
                        } else {
                            alert(response.msg);
                        }
                    },
                    error: function() {
                        alert('请求失败');
                    }
                });
            });
        });
    </script>
</body>
</html>

忘记说了用Composer安装spatie/pdf-to-text库
上传路劲自己配置一下

分享到 :
相关推荐

发表评论

登录... 后才能评论