整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

php调用python脚本将word转为html代码

详细]php调用python脚本,将word转为html代码及调用失败处理

起因:因为公司遇到发稿问题,很多人喜欢用word编码,然后再发布到网站上。PHP的包中虽然有部分可以使用的类库,但是对于图片始终处理不好,我就想到了python。研究了下,python将word转为html还真是方便。但是,怎么结合到服务器上呢?我们的服务器是用PHP开发的。

1:python脚本

#!/usr/bin/python# -*- coding: UTF-8 -*-import sysfrom pydocx import PyDocXreload(sys)sys.setdefaultencoding('utf8')FileName = sys.argv[1] #获取文件名参数ShortName = sys.argv[2] #获取文件名参数html = PyDocX.to_html(FileName) # f = open("/www/wwwroot/micuer.com/pythoncode/runtime/99.txt", 'w') #服务器的全路径# f.write(html)# f.close()print(html)

2:php处理脚本

public function uploadword(){        try {            $file = request()->file("file");            // 上传到本地服务器            $savename = \think\facade\Filesystem::disk('upload')->putFile( 'word', $file);            $shotrname = time().".txt"; // 短名称            $savename = "/www/wwwroot/micuer.com/data/upload/".$savename; //Request::domain().            $python_file_name = "/www/wwwroot/micuer.com/pythoncode/WordToHtml.py";            //组装命令            $cmd = "python {$python_file_name} ".$savename." {$shotrname}  2>error.txt 2>&1";            $res = exec($cmd,$array, $ret);            return json(["code"=>200,"msg"=>"成功","data"=>$savename,"cmd"=>$cmd,"array"=>$array]);        } catch (think\exception\ValidateException $e) {            return json(["code"=>40000,"msg"=>$e->getMessage()]);        }    }

上传界面如下:

实现的功能就是利用PHP的exec函数,调用py脚本,将html代码返回给前台服务器。

返回数据如下

其实,再处理这个方案中,也遇到了很多问题,比如在命令行下只能成功,但是exec函数执行不成功等等。
参考了资料:https://my.oschina.net/u/4427610/blog/3155816
也就是

exec("python python_test.py 2>error.txt 2>&1", $array, $ret);

在bash中0,1,2三个数字分代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,即标准输入(一般是键盘),标准输出(一般是显示屏,准确的说是用户终端控制台),标准错误(出错信息输出)。
也可以通过以下方式将标准错误重定向到标准输出保存到$array中:
打印之后,发现是没有权限调用。于是就直接改为输出了,也就是 py的print(html)函数。

注意几点:
1:执行权限问题
2:exec(“python python_test.py 2>error.txt 2>&1”, $array, $ret); 中 $array就接受到了 print(html)的值
3:各个脚本尽量使用全路径

用PHP生成HTML文档, 支持标签嵌套缩进, 支持标签自定义属性

起因

这个东西确实也是心血来潮写的, 本来打算是输出HTML片段用的, 但后来就干脆写成了一个可以输出完整HTML的功能;

我很满意里边的实现缩进的机制, 大家有用到的可以看看

p.s. 现在都是真正的前后端分离了(vue, nodejs, webpack...), 这个东西喜欢就用, 不喜欢就算了~

支持的标签

html, head, meta, title, body, input, select/option, form, table, div, 注释, 以及 自定义标签(成对出现的标签), 还有一大堆属性(在下边有介绍)

实现

整体

1.每个标签都对应一个类, 比如 标签<html>, 对应了一个叫html的类

2.标签中有用到的属性, 我都放到了一个类中了, 并提供了方法去获取赋了值的属性

嵌套缩进

每个标签我都设计了一个类, 比如 table 标签, 就有一个叫table的类与之对应

每个类里边一般都有以下3个重要成员:

1.本标签的缩进值

2.输出本标签最终字符串的方法, out()

3.给本标签添加子标签的方发, append()

其中append()接收的是子标签的对象, 在最终调用$html->out()的时候, 每个子标签对象里的out()方法会被依次调用, 缩进值也会从上层类传递到最下层类并累加;

另外, 每个类都包含了属性类(calss attribute ), 每个类的缩进值是从属性类里继承而来的, 所以如果修改了属性类里的缩进量, 所有类的缩进量就跟着改变了

你也可以给标签类添加一个自己的缩进值来覆盖统一的缩进值

属性

我这里的方案是定义一个类(calss attribute ), 里边有

1.标签可能拥有的属性

2.对应的setXxx方法

3.组装非空的属性拼成字符串的方法

4.为了不影响下次显示, 会有专门的清空方法, 把之前赋值的属性都清空

这样的话, 在定义标签属性的时候, 需要的就赋上值, 不需要的不赋值就不会在最终的HTML代码中显示出来

源码地址: 传到码云了,看其中的test.php文件,是介绍他的用法。

以上就是用php生成HTML文件的类的详细内容,更多请关注其它相关文章!

更多技巧请《转发 + 关注》哦!

khtmltopdf是一个非常有用的应用程序,用于从html(网页)创建pdf。本篇文章将介绍关于如何使用php脚本和Linux命令行工具创建网页的pdf。



步骤1:在Linux中安装wkhtmltopdf

从google code下载wkhtmltopdf并安装到Linux系统。

# cd /opt

# wget https://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-i386.tar.bz2

# tar xjf wkhtmltopdf-0.9.9-static-i386.tar.bz2

# mv wkhtmltopdf-i386 /usr/bin/wkhtmltopdf

# chown apache:apache /usr/bin/wkhtmltopdf

# chmod +x /usr/bin/wkhtmltopdf

步骤2:使用命令行创建PDF

首先检查wkhtmltopdf脚本,它在命令行中正常工作。下面的命令将创建http://google.com网页的pdf。

# /usr/bin/wkhtmltopdf http://google.com google.pdf

步骤3:使用wkhtmltopdf创建pdf的php代码

使用下面的PHP代码块从HTML(网页)生成PDF。此脚本需要为Apache启用shell_exec函数。大多数共享主机不允许此函数。

使用下面的代码创建一个文件名getpdf.php,并将其放到网站文档根目录中。

<?php

$url = $_GET['url']; // Website URL to Create pdf

$name = $_GET['pdf']; // Output pdf name

$command = "/usr/bin/wkhtmltopdf ";

$pdf_dir = "/var/www/html/pdfs/"; // Pdf files will be saved here

$ex_cmd = "$command $url " . $pdf_dir . $name;

$output = shell_exec($ex_cmd);

?>

打开以下网址生成网站的pdf(html)。

语法:http:

//youdomain.com/getPdf.php?url = <website url>&pdf = <pdf name>

示例:

https : //tecadmin.net/getPdf.php?url = http : //google.com&pdf=google.pdf

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注的Linux视频教程栏目!

以上就是使用Qtwebkit和PHP将HTML转换为PDF的详细内容,更多请关注其它相关文章!

更多技巧请《转发 + 关注》哦!