PHP实战之掌握word&pdf插件

1.前言

因为博客文章排版的问题,以及自己一直都是先用word文档编写做笔记,然后复制粘贴到自己的博客网站,但是总发现样式排版出现了偏差,为了方便阅读,我希望将word文档能够直接在web上显示,但是尝试了很多次,读取word文档受环境影响,所以另取途径,将word文档生成pdf显示在web上,下面我们来实操一下。

代码分享:https://github.com/mtdgclub/pdfObject

2.php打开word文档

2.1第一步:在php.ini文件配置

extension=php_com_dotnet.dll com.allow_dcom=true

2.2第二步:编辑代码读取word

<?php header('Content-type:text/html;charset=utf-8'); //穿件指向COM组件的索引 $word = new COM("word.application") or die("Unable to instantiate Word"); //显示目前Word版本号 echo "Loaded Word, version {$word->Version}\n"; //设置可见性 $word->Visible=0; //打开一个文档 $word->Documents->open(dirname(__FILE__)."1.docx"); //读取文档内容 $test = $word->ActiveDocument->contant->Text; //输出文档内容 echo "<hr/>"; echo $test; //关闭word的连接 $word->Quit(); //清空对象 $word=null;

2.3第三步:展现效果

暂时实现不了,待以后补充

3.php打开pdf文档

期望能够实现像道客巴巴那样的预览效果

3.1第一步:编辑代码读取pdf

先编写通过PHP打开pdf文档,代码如下:

<?php if (!function_exists('read_pdf')) { function read_pdf($file) { if (strtolower(substr(strrchr($file, '.'), 1)) != 'pdf') { echo '文件格式不对.'; return; } if (!file_exists($file)) { echo '文件不存在'; return; } header('Content-type: application/pdf'); header('filename=' . $file); readfile($file); } } read_pdf('php.pdf');

但这样显示的是浏览器全屏预览,所以为了更好地用户体验,在前端采用 pdfobject在线显示文档组件来显示文档

3.2第二步:下载PDFObject组件

官网:https://pdfobject.com/

github下载:https://github.com/pipwerks/PDFObject/

3.3第三步:应用与实战

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>在线浏览PDF</title> </head> <body> <script type="text/javascript" src="PDFObject/pdfobject.min.js"></script> <script> // 我的pdf文件放在项目的pdf文件夹下,名字叫做php.pdf PDFObject.embed("php.pdf"); </script> </body> </html>

3.4第四步:设定浏览PDF窗口样式

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>设定浏览PDF窗口样式</title> <!--在此引入bootstrap只为初始化样式div样式--> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"/> <style> html, body { height: 100%; overflow: hidden; background-color: cornflowerblue; }
1 /\* 设置放置PDF的div的样式 \*/ 2 #example1 { 3 width: 80%; 4 height: 80%; 5 } 6 7 /\* PDF容器样式 \*/ 8 .pdfobject-container { 9 height: 800px; 10 } 11 12 /\* PDF样式 \*/ 13 .pdfobject { 14 border: 1px solid #666; 15 } 16</style>
</head> <body> <div id="example1"></div> </body> </html> <script type="text/javascript" src="PDFObject/pdfobject.min.js"></script> <script> // 我的pdf文件放在项目的pdf文件夹下,名字叫做php.pdf //其中,{page: "1"}表示从第几页开始展示 PDFObject.embed("php.pdf", "#example1", {page: "1"}); </script>

4.总结

总的来说,上述实操实现了我想要的预览效果,我会在下次博客版本升级中运用到这项技术,而对于word来说,因为需要配置本地环境(主要原因是word不开源)才能使得php创建COM对象成功,以及可能会出现的乱码问题(老司机说的),所以,目前暂时还未能完美实现,建议在web上采用pdf预览。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )