今天将以前测试实践总结分享一下,使用libreoffice 将office转换为pdf在网页上显示。
一、文档另存为网页html/html
在笔者以前的文章-利用VenoBox插件在网页中悬浮显示word文档 ,利用文档的自带的功能,将文件-另存为-网页html/html,生成的网页利用VenoBox插件在网页中悬浮显示。
人为手动来另存为转换,那是不是可以使用python脚本来辅助自动转换呢?
二、Using libreoffice to convert office to PDF
php通过COM接口来操作 libreoffice就行转换,笔者将代码代管在某国外大型同性交友网站,在windows下测试成功。这也是笔者的第一个托管repository,以后将会大量使用这个网站。
https://github.com/laufei90/office2pdf 。
Using libreoffice to convert office to PDF.
1、first of all,You need to install libreoffice.
2、pdf.php is to convert offcie to PDF class.
3、index.php calls the pdf.php,and display the converted pdf.
index.php:
同时,关于pdf显示方法问题,参考笔者以前的文章-html中前端页面预览pdf文档的6种方法 。
三、命令行实现文档转换
笔者在已安装libreoffice 的树莓派4B中测试。dpkg -l | grep libreoffice 可以查看是否安装了libreoffice 。
使用 soffice转换命令,将本目录下的 mytest.doc转换到本目录下的 mytest.pdf 。
sudo soffice --headless --convert-to pdf mytest.doc --outdir ./
在测试时,虽然有错误,但是转后的还是正常的!
这是转后用winscp拷贝出来后的效果 。
既然shell命令开源执行转换,那么php怎么调用shell命令呢?哈哈,以前笔者写过这样的文章-php语言怎么执行shell脚本语言 。见多识广,知识可以串起来的。
那么问题就来了,文档转换是单进程的,那么遇到多用户使用的话该怎么办呢?以linux中为例。
笔者想到了两个方案,不知是否有可行性。
1、Linux的文件锁flock,排队来执行脚本,那么php调用flock命令,那么参数可能要调节,遇到大文件转换费时的话。
2、使用docker来实现libreoffice并发转换docx文件为pdf 。这个是我看到网页有人给出的方案,笔者玩过docker(podman),找个时间来测试一番。
网友评论