php 读取并显示doc,PHP读取doc,docx,xls,pdf,txt内容

这篇博客介绍了如何使用PHP读取并显示不同文件类型(如DOC、DOCX、PDF、TXT等)的内容。通过shell_exec函数调用相应工具(如antiword、pdftotext)来读取DOC和PDF,利用ZipArchive处理DOCX和ZIP文件,并展示了计算文件中单词数的方法。
摘要由CSDN通过智能技术生成

我的一个客户有这样的需求:上传文件,可以是doc,docx,xls,pdf,txt格式,现需要用php读取这些文件的内容,然后计算文件里面字数.

1.PHP读取DOC格式的文件

首先介绍一下如何在windows下使用:

2.将下载下来的文件解压到C盘根目录下;

需要设置环境变量,我的电脑(右键)->高级->环境变量->在上面的用户变量里新建一个

变量名:HOME

变量值:c:\home这个目录应该是存在的,如果不存在就在C盘下创建一个home文件夹.

然后在系统变量,修改Path,在Path变量的值最前面加上%HOME%\antiword.

1dd32b288e4da4ced221ac4b646abd7d.jpg

3.开始->运行->CMD 进入到antiword目录;

输入 antiword -h 看看效果.

4c576e531ee7f3aad12f5f08343bfe55.jpg

4.然后我们使用antiword –t 命令读取一下doc文件内容;首先复制一个doc文件到c:\antiword目录,然后执行

>antiword –t 文件名.doc

就可以看到屏幕上输出word文件的内容了.

可能你会问了,这和PHP读取word有什么关系呢?呵呵,别急,我们来看看如何在PHP里使用这个命令.

$file = “D:\xampp\htdocs\word_count\uploads\doc-english.doc”;

$content = shell_exec(“c:\antiword\antiword –f $file”);

?>

这样就把word里面的内容读取content里面了.

至于如何在Linux下读取doc文件内容,就是下载linux版本的压缩包,里面有readme.txt文件,按照那种方式安装就可以了.

$content = shell_exec ( "/usr/local/bin/antiword -f $file" );

2.PHP读取PDF文件内容

php也没有专门用来读取pdf内容的类库.这样我们采用第三方包(xpdf).还是先做windows下的操作,下载,将其解压到C盘根目录下.

开始->运行->cmd->cd /d c:\xpdf

$file = “D:\xampp\htdocs\word_count\uploads\pdf-english.pdf”;

$content = shell_exec ( "c:\\xpdf\\pdftotext $file -" );

?>

这样就可以把pdf文件的内容读取到php变量里了.

Linux下的安装方法也很简单这里就不在一一列出

$content = shell_exec ( "/usr/bin/pdftotext $file -" );

?>

3.PHP读取ZIP文件内容

首先使用PHP zip解压zip文件,然后读取解压包里的文件,如果是word就采用antiword读取,如果是pdf就使用xpdf读取.

/**

* Read ZIP valid file

*

* @param string $file file path

* @return string total valid content

*/

function ReadZIPFile($file = '') {

$content = "";

$inValidFileName = array ();

$zip = new ZipArchive ( );

if ($zip->open ( $file ) === TR ) {

for($i = 0; $i < $zip->numFiles; $i ++) {

$entry = $zip->getNameIndex ( $i );

if (preg_match ( '#\.(txt)|\.(doc)|\.(docx)|\.(pdf)$#i', $entry )) {

$zip->extractTo ( pathinfo ( $file, PATHINFO_DIRNAME ) . "/" . pathinfo ( $file, PATHINFO_FILENAME ), array (

$entry

) );

$conte

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的示例代码,演示如何在Spring Boot和Vue中实现点击查看多种类型文件(包括docdocxxlsxlsx、pdf): 1. 后端Spring Boot代码: ```java @RestController @RequestMapping("/api/files") public class FileController { @GetMapping("/{fileName}") public ResponseEntity<Resource> downloadFile(@PathVariable String fileName) throws IOException { // 根据文件名获取文件路径 String filePath = "path/to/files/" + fileName; // 读取文件内容 Path path = Paths.get(filePath); Resource resource = new InputStreamResource(Files.newInputStream(path)); // 设置响应头,让浏览器能够正确解析文件类型 HttpHeaders headers = new HttpHeaders(); headers.add(HttpHeaders.CONTENT_DISPOSITION, "inline; filename=" + fileName); // 返回文件内容和响应头 return ResponseEntity.ok() .headers(headers) .contentType(MediaType.APPLICATION_OCTET_STREAM) .body(resource); } } ``` 2. 前端Vue代码: ```vue <template> <div> <ul> <li v-for="file in files" :key="file.name"> <a @click="viewFile(file.name)">{{ file.name }}</a> </li> </ul> <div v-if="selectedFile"> <iframe :src="selectedFileUrl" width="100%" height="500px"></iframe> </div> </div> </template> <script> import axios from 'axios'; export default { data() { return { files: [], selectedFile: null }; }, methods: { getFileList() { axios.get('/api/files') .then(response => { this.files = response.data; }) .catch(error => { console.error(error); }); }, viewFile(fileName) { this.selectedFile = fileName; } }, computed: { selectedFileUrl() { return `/api/files/${this.selectedFile}`; } }, created() { this.getFileList(); } }; </script> ``` 以上示例中,后端的`FileController`定义了一个GET请求的接口`/api/files/{fileName}`,用于下载文件。前端的Vue组件中,通过调用后端接口获取文件列表,并为每个文件添加点击事件,点击时将文件名赋值给`selectedFile`,然后通过动态生成的URL来展示文件内容。 请根据实际情况修改代码中的文件路径和URL路径。希望对您有所帮助!如有更多问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值