linux下yum install libreoffice

yum install libreoffice-headless

如果出现异常,在页面上不一定表现出来,而是页面卡着一直没响应,通过apache日志看到相关错误[Java framework] Error in function createSettingsDocument (elements.cxx).

javaldx failed!

Warning: failed to read path from javaldx

处理为#因为用户 www没有HOME 会跑到root导致没权限,可指定 export HOME=/tmp/ && 解决$shell = "export HOME=/tmp/ && /usr/bin/libreoffice --headless --convert-to html --print-to-file --printer-name nasty_lowres_printer --outdir {$_SERVER['DOCUMENT_ROOT']}/out_file/ {$full_result_path} > /dev/null 2>/dev/null &";

php如果做了函数安全过滤,需要放行shell_exec

php代码public function upload(){

if(IS_POST){

header('Content-type: text/html; charset=UTF-8');

$reulst = upload('file');

//如果成功上传doc,转html

$full_result_path = $_SERVER['DOCUMENT_ROOT'].$reulst;

if(file_exists($full_result_path)){

$shell = "/usr/bin/libreoffice --headless --convert-to html --print-to-file --printer-name nasty_lowres_printer --outdir {$_SERVER['DOCUMENT_ROOT']}/out_file/ {$full_result_path}";

$doc_file_contents = shell_exec($shell);

$pattern = '/\/(\d+).html/';

preg_match_all($pattern,$doc_file_contents,$match);

if(!empty($match[0])){

$path = ($_SERVER['DOCUMENT_ROOT'].'/out_file'.$match[0][0]);

$html = file_get_contents($path);

$img_pattern = '/

preg_match_all($img_pattern,$html,$match2);

$base64_arr = $match2[2];

set_time_limit(120);

$Qiniu = new Qiniu('xxxxx','xxxxx','xxxxx');

//七牛日志

$log = [];

foreach($base64_arr as $base64){

if(strlen($base64) < 60){

$html = str_replace($base64,'',$html);

$html = preg_replace('/]*)>/i','',$html);

}else{

preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64, $ext_result);

$file_name = date('YmdHis').'.'. rand(10000, 99999).'.'.$ext_result[2];

$qiniukey= date("Ymd").'/doc/'.$file_name;

$status = $Qiniu->upload_file($base64,$qiniukey);

array_push($log,json_encode($status));

if($status['status']=='success'){

$status = 'http://cms3.jmcdn.cn/'.$status['key'];

$html = str_replace($base64,$status,$html);

}else{

//如果七牛保存失败,则保存到本地 [by shw 20180709反复测试,有时候会传七牛失败 ,但最后几次均全部成功,可能和网络有关

//也可能文件名,测试也是加了随机数文件名之后,确认下,如果还有问题则需要在这里还需要传一次到网上,本地图片无法主站下图]

$new_file = "{$_SERVER['DOCUMENT_ROOT']}/out_file/".$file_name;

file_put_contents($new_file, base64_decode(str_replace($ext_result[1], '', $base64)));

$html = str_replace($base64,"/out_file/".$file_name,$html);

}

}

}$html = removeFormat($html);

echo $html;

print_r($log);die();

}else{

die('no match');

}

}else{

echo '没有转换文件,输出 '.$reulst;

}

die();

}

$this->display();

}

html页面

upload的视图

上传文件

function sub() {

var obj = new XMLHttpRequest();

obj.onreadystatechange = function() {

if (obj.status == 200 && obj.readyState == 4) {

var result = obj.responseText;

if(result.indexOf("upload") >-1 && result.indexOf("image") >-1){

window.opener.document.getElementById("message").innerHTML = result;

document.getElementById('con').innerHTML = "上传成功";

document.getElementById("a1").style.display = "none";

document.getElementById("a2").style.display = "block";

}else{

document.getElementById('con').innerHTML = result;

}

}

}

// 通过Ajax对象的upload属性的onprogress事件感知当前文件上传状态

obj.upload.onprogress = function(evt) {

// 上传附件大小的百分比

var per = Math.floor((evt.loaded / evt.total) * 100) + "%";

// 当上传文件时显示进度条

document.getElementById('parent').style.display = 'block';

// 通过上传百分比设置进度条样式的宽度

document.getElementById('son').style.width = per;

// 在进度条上显示上传的进度值

document.getElementById('son').innerHTML = per;

}

// 通过FormData收集零散的文件上传信息

var fm = document.getElementById('userfile3').files[0];

var fd = new FormData();

fd.append('userfile', fm);

obj.open("post", "/index.php?g=portal&m=shw&a=upload");

obj.send(fd);

}

#parent {

width: 200px;

height: 20px;

border: 2px solid gray;

background: lightgray;

display: none;

}

#son {

width: 0;

height: 100%;

background: lightgreen;

text-align: center;

}

图片上传

html页面调用者

Title

function upload(){

window.open("/index.php?g=portal&m=shw&a=upload","上传文档","width=500,height=480,screenX=400,screenY=100");

}

非特殊说明,本博所有文章均为博主原创。

最新文章

php linux下保存文件路径怎么写,linux下php导入带图片的word文档转为html,图片保存下来生成路径。...相关推荐

  1. word保存为html不压缩图片大小,如何一键保存word文档中的图片?只需把.docx后缀改成压缩格式.zip即可 ......

    有时候我们在网上下载一篇Word文档,里面有很多张图片,我们想要将这些图片保存下来.如果是单张图片保存,我们可以选中图片,然后点击鼠标右键,选择[另存为图片]即可,如下图所示. 但如果是需要将所有图片 ...

  2. 写word文档时计算机的工作原理,写word文档时还没保存电脑就死机如何恢复

    电脑已经成为人类生活中不可缺少的一部分,人们利用电脑可以轻松的完成以前需要大量劳动力才能完成的工作,但在人们在使用电脑中也会遇到很多的麻烦,比如死机,这些原因烦恼着每一个电脑用户,这不,最近就有小伙伴 ...

  3. 计算机文件保存方式,Word文档的三种保存方式

    word中有多种保存文档的方式.可保存当前处理的活动文档 (活动文档:正在处理的文档.在 Microsoft word 中键入的文本或插入的图形将出现在活动文档中.活动文档的标题栏是突出显示的.),无 ...

  4. pageOffice插件 springboot实现服务器上Word文档在线打开编辑保存

    pageOffice插件 springboot实现服务器上Word文档在线打开编辑保存 需求: 在oa系统上,想实现在线,服务器上doc,docx文档,在web打开,编辑.编辑后,可以再同步保存到服务 ...

  5. 【Python】批量导出word文档中的图片、嵌入式文件

    Python 批量导出word文档中的图片.嵌入式文件 需求 学生试卷中的题目有要提交截图的,也有要提交文件的,为了方便学生考试,允许单独交或者嵌入Word中提交,那么事后如何整理学生的答案?单独提交 ...

  6. 将word文档中的图片批量导出到文件夹中的办法

    有两个办法. 第一个办法: 1.打开需要导出图片的Word文档,打开后,选择菜单栏的[文件]选项-[另存为]: 2.将文件选择路径之后另存为,在下方文件类型下拉菜单中选择[(*.htm; *.html ...

  7. python word排版_使用Python通过win32 COM实现Word文档的写入与保存方法

    通过win32 COM接口实现软件的操作本质上来看跟直接操作软件一致,这跟我之前经常用的通过各种扩展的组件或者库实现各种文件的处理有较大的差异.如果有过Windows下使用Word的经历,那么使用wi ...

  8. linux下poi把word转图片,我需要将Apache POI图片从Word文档转换为html文件

    我有一些代码使用Java Apache POI库打开一个Microsoft Word文档,并使用Apache POI将其转换为html,它还会获取文档上图像的字节数组数据.但是我需要将此信息转换为ht ...

  9. js创建word文档写入文本并保存为doc文件

    var doc = new ActiveXObject("Word.application");//激活ActiveXObject的Word对象 doc.visible = tru ...

最新文章

  1. 简简单单日赚200元,当日结算
  2. POPUP_TO_CONFIRM_WITH_MESSAGE
  3. kafka+zookeeper安装配置
  4. java 文件写_java写入文件的几种方法分享
  5. OJ1013: 求两点间距离
  6. pitr 原理_PostgeSQL 数据库备份与恢复实验 (PITR)
  7. 《疯狂Java讲义》(十五)---- 内部类
  8. Ubuntu sudo 出现unable to resolve host 解决方法
  9. Java编程:爬楼梯问题、斐波那契数列问题
  10. 基于springboot+vue的医院预约系统(前后端分离)
  11. CSS控制文本超出指定宽度显示省略号和文本不换行
  12. 如何利用Matlab对指定条件下的excel单元格填充颜色
  13. 标志寄存器(PSW)
  14. 两年工作经验,离职了...
  15. 内存中常见的错误及解决方法
  16. 云服务器物理机在,一个云服务器会在两个物理机上吗
  17. Guns最新的代码生成器的使用
  18. python火柴人游戏代码_Python小游戏 Hangman
  19. 栗子熟了,让我们一起去黑龙潭摘板栗吧
  20. 为什么我不能提前离开

热门文章

  1. VHDL学习:利用Quartus自带库3步快速完成状态机
  2. IOS 设备信息读取
  3. linux 内核 linux kernel travel
  4. 12月第2周.NET总量TOP10:中土意涨幅均环比增大
  5. 尝试做了个Chrome浏览器的扩展程序,显示extensions的页面
  6. Sql Server 日期格式转换
  7. Java 斐波那契数列
  8. Windows 8 IIS中配置PHP运行环境的方法
  9. IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程
  10. ASP.NET Web API路由规则(二)