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库
上传路劲自己配置一下
版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!