- 目录
- 1.前言
- 2.php打开word文档
- 2.1第一步:在php.ini文件配置
- 2.2第二步:编辑代码读取word
- 2.3第三步:展现效果
- 3.php打开pdf文档
- 3.1第一步:编辑代码读取pdf
- 3.2第二步:下载PDFObject组件
- 3.3第三步:应用与实战
- 3.4第四步:设定浏览PDF窗口样式
- 4.总结
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组件
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; }</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>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>
4.总结
总的来说,上述实操实现了我想要的预览效果,我会在下次博客版本升级中运用到这项技术,而对于word来说,因为需要配置本地环境(主要原因是word不开源)才能使得php创建COM对象成功,以及可能会出现的乱码问题(老司机说的),所以,目前暂时还未能完美实现,建议在web上采用pdf预览。