美文网首页
PHP与Python程序交互

PHP与Python程序交互

作者: artCoding | 来源:发表于2020-07-17 19:34 被阅读0次

php程序中与python脚本交互,使用python封装工具方法供php程序调用,数据分类、AI类可用python封装脚本,为php程序赋能

以pdf转png场景为例,python脚本实现pdf转png功能并返回json格式数据

1.php中调用示例

/**
* 说明:
* exec有3个参数
* 第一个是要执行的命令
* 第二个是参数是一个数组,数组的值是由第一个命令执行后生成的
* 第三个参数执行的状态,1表示成功,其他都表示失败。
* 查看具体信息需要使用 2>&1, 命令就会输出shell执行时的错误到$output变量,必须加上。
* @param $pdfFile
* @return array
*/
static function pdfToPngByPy($pdfFile)
{
    //pdf文件为绝对路径
    $pdfFile = '/Applications/MAMP/htdocs/xxx/'.$pdfFile;
    //python3程序和要执行的python脚本文件均为绝对路径。
    //$pdffile为传入python脚本的参数
    //该命令相当于 python3 [pdftopng.py](http://pdftopng.py/) pdffile
    //2>&1必须要有,不然拿不到返回
    $pythonEx = "/Library/Frameworks/Python.framework/Versions/3.8/bin/python3 /Users/leedev/Documents/python/handlerimg/pdftopng.py {$pdfFile} 2>&1";
    exec($pythonEx, $out, $res);
    $ret = json_decode($out[0], true);
    return $ret;
}

2.python文件示例

需先安装PyMuPDF扩展
python3 -m pip install PyMuPDF

import sys
import fitz
import json
import time
import random

rotate = int(0)
# 生成图片的尺寸:数值越大,图片尺寸越大
zoom_x = 1.8
zoom_y = 1.8
trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)

# 获取php程序传递的参数
open_file_path = sys.argv[1]
save_file_path = '/Applications/MAMP/htdocs/invoiceFile/'

try:
    pdf = fitz.open(open_file_path)

    # 多页pdf转换成多个图片
    # for i in range(pdf.pageCount):
    #   pm = pdf[i].getPixmap(matrix=trans, alpha=False)
    #   pm.writePNG(save_file_path + '/%s.png' % i)

    # 单页pdf转png
    pm = pdf[0].getPixmap(matrix=trans, alpha=False)
    file_name = str(int(time.time()) + random.randint(999, 9999)) + '.png'
    pm.writePNG(save_file_path + file_name)
except IOError:
    returnArr = {"code": 999, 'message': '文件操作异常'}
    print(json.dumps(returnArr))
except TypeError:
    returnArr = {"code": 500, 'message': '内部错误'}
    print(json.dumps(returnArr))
except RuntimeError:
    returnArr = {"code": 500, 'message': '内部错误'}
    print(json.dumps(returnArr))
else:
    returnArr = {"code": 200, "fileName": file_name}
    print(json.dumps(returnArr))

相关文章

  • PHP与Python程序交互

    php程序中与python脚本交互,使用python封装工具方法供php程序调用,数据分类、AI类可用python...

  • os和sys模块区别

    os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口; sys模块负责程序与python解释器的交互,提...

  • 使用脚本与以太坊交互

    除了控制台外,以太坊还支持用脚本与geth交互。除了JS外,还支持Python、PHP Java等。 以太坊的交互...

  • 2018-10-31

    Python交互式程序与While循环 (1)用户输入——input() message=input('show ...

  • 001 我和python的第一次亲密接触 2019-07-0

    从IDLE启动pythonIDLE是一个python shell (通过键入文本与程序交互) python相关零碎...

  • python基础语法要点

    一 python脚本 交互编译环境 ​ >>> python的脚本或者程序 ​ 编写py...

  • 4、第一个Python程序

    运行程序的两种方式: 交互式运行Python语句 保存源文件运行程序 一、交互式运行Python语句 超级计算器:...

  • 各种数据库与Python之间的交互

    一、MySQL与Python的交互 二、MongoDB与Python的交互 备注: 默认MongoDB是绑定127...

  • 02-第一个Python程序

    执行Python程序的3种方式 解释器 -- python、python3 交互式 -- ipython 集成开发...

  • MySQL架构与SQL执行流程

    架构 1、 Connector:用来支持各种语言和 SQL 的交互,比如 PHP,Python,Java 的 JD...

网友评论

      本文标题:PHP与Python程序交互

      本文链接:https://www.haomeiwen.com/subject/fnjnhktx.html