/** * @Title: repStrPHPword * @Description: todo(模板标签文件和数据进行替换,然后到处word) * @param 模板标签文件地址 $docfile * @param 生成的最新文件目录 $causedir * @param 导出的数据源数组 $bookNamearr * @param 生成的最新文件名 $fileName * @param 导出的文件类型,默认为word $type * @author 王昭侠 * @date 2015-6-29 下午4:54:45 * @throws */ public function repStrPHPword($docfile, $causedir, $bookNamearr, $fileName, $type = "word", $export = 'word') { set_time_limit(0); //验证模板标签文件是否存在 if (!file_exists($docfile)) { $this->error("模板文件不存在,请检查"); } //验证最新文件目录是否存在 if (!file_exists($causedir)) { //不存在则生成最新文件目录 $this->createFolders($causedir); //判断目标文件夹是否存在 } import('@.ORG.PHPWord', '', $ext = '.php'); $PHPWord = new PHPWord(); $filepath = pathinfo($docfile); $filenameGBK = $causedir . '/' . $fileName . '.' . $filepath['extension']; $filenameUTF8 = iconv("UTF-8", "GBK", $filenameGBK); $document = $PHPWord->loadTemplate($docfile); $document->clearAllBiaoji(); foreach ($bookNamearr as $k => $v) { if ($v["is_datatable"]) { $data = array(); $data["showname"] = $v["showname"]; $data["value"] = $v["value"]; $data["showtype"] = $v["showtype"] !== NULL ? $v["showtype"] : 0; $data["showtitle"] = $v["showtitle"] !== NULL ? $v["showtitle"] : 0; $data["zihao"] = $v["zihao"]; $data["hangjianju"] = $v["hangjianju"]; $data["ziti"] = $v["ziti"]; if (isset($v["colORrow"])) { $data["colORrow"] = $v["colORrow"]; } //title_none 如果等于1表示去掉hearder头部 if (is_array($v["value"]) && !isset($v["colORrow"]) && $v['title_none'] != 1) { foreach ($v["value"] as $kk => $vv) { $data["titleArr"][] = empty($vv["showname"]) ? "" : $vv["showname"]; $data["fieldwidth"][] = $v["fieldwidth"][$vv["name"]]; } } $document->setValue($v["name"], $data); } else { $document->setValue($v["name"], $v); } } if (!empty($_SESSION["htmltodocx_img"])) { $content = $document->getStr(); $document->clearTemplateTag(); $document->save($filenameUTF8); // New portrait section $section = $PHPWord->createSection(); // Add image elements foreach ($_SESSION["htmltodocx_img"] as $v => $k) { $section->addImage($k["src"], $k["style"]); $section->addTextBreak(1); } // Save File $objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007'); $imgurl = UPLOAD_SampleWord . 'Image.docx'; $objWriter->save($imgurl); unset($_SESSION["htmltodocx_img"]); $documentImg = $PHPWord->loadTemplate($imgurl); $documentImg->setStr($content); $documentImg->save($filenameUTF8); unlink($imgurl); } else { $document->clearTemplateTag(); $document->save($filenameUTF8); } if ($export == 'swf') { //生成PDF $HttpSoctetIOAction = A('Http'); $filenamePDFUTF8 = $HttpSoctetIOAction->createPDF($causedir, $filenameUTF8); $swfurl = str_replace("pdf", "swf", $filenamePDFUTF8); $swfurl = preg_replace("/^([\\s\\S]+)\\/Public\\//", "", $swfurl); if ($type == "pdf") { $filenameUTF8 = $filenamePDFUTF8; } } //导出后,就修改版本信息 $savewordmodel = M('mis_system_template_saveword'); $filenameUTF8Quan = preg_replace("/^([\\s\\S]+)\\/Public\\//", "", $filenameUTF8); //获取参数 $id = $_REQUEST['id']; $saveWordId = $_REQUEST['fileid']; $modelname = $this->getActionName(); $wordMap['modelid'] = $id; $wordMap['modelname'] = $modelname; $wordMap['id'] = $saveWordId; if ($export == 'swf' && !$saveWordId) { //如果是在线查看,却又没有版本id 那么直接获取最新版本号 $swfnewmap['modelid'] = $id; $swfnewmap['modelname'] = $modelname; $saveWordId = $wordMap['id'] = $savewordmodel->where($swfnewmap)->order("id desc")->getField("id"); } $wordData['fileurl'] = $filenameUTF8Quan; $wordData['swfurl'] = $swfurl; $wordData['isexport'] = 1; if ($modelname == 'MisSalesMyProject') { $wordData['modelid'] = $id; $wordData['modelname'] = $modelname; unset($wordMap['id']); $wlist = $savewordmodel->where($wordMap)->select(); if ($wlist) { $query = $savewordmodel->where($wordMap)->save($wordData); } else { $query = $savewordmodel->add($wordData); } } else { if ($wordMap['id']) { $query = $savewordmodel->where($wordMap)->save($wordData); } } $savewordmodel->commit(); if ($export == 'word') { ob_end_clean(); header("Cache-Control: public"); header("Content-Type: application/force-download"); header("Content-Disposition: attachment; filename=" . basename($filenameUTF8)); readfile($filenameUTF8); exit; } elseif ($export == "swf") { // if($saveWordId){ // $swfmap['id']=$saveWordId; // $templateModel = M("mis_system_template_saveword"); // $rs = $templateModel->where($swfmap)->order("id desc")->find(); // $file_path = "/Public/".$rs['swfurl'];//暂时修改,等保存路径正常后直接取路径 // }else{ // $file_path = "/Public/".$swfurl;//暂时修改,等保存路径正常后直接取路径 // } //$file_path = preg_replace("/^([\s\S]+)\/Public/", "__PUBLIC__", $rs['swfurl']); // $this->assign("file_name", $rs['filename']); // $this->assign("file_type", 'file'); // $this->assign('file_path', $file_path); // $this->display("Public:playswf"); // $ip = GetHostByName($_SERVER['SERVER_NAME']);//获取本机IP $ip = C("DB_HOST_WORD"); //"192.168.0.238"; require_once "http://{$ip}:8088/JavaBridge/java/Java.inc"; //此行必须 $PageOfficeCtrl = new Java("com.zhuozhengsoft.pageoffice.PageOfficeCtrlPHP"); //此行必须 $PageOfficeCtrl->setServerPage("http://{$ip}:8088/JavaBridge/poserver.zz"); //此行必须,设置服务器页面 java_set_file_encoding("utf8"); //设置中文编码,若涉及到中文必须设置中文编码 $PageOfficeCtrl->setAllowCopy(false); //禁止拷贝 //$PageOfficeCtrl->setMenubar(false);//隐藏菜单栏 $PageOfficeCtrl->setOfficeToolbars(false); //隐藏Office工具条 $PageOfficeCtrl->setCustomToolbar(false); //隐藏自定义工具栏 $PageOfficeCtrl->setJsFunction_AfterDocumentOpened("AfterDocumentOpened"); //打开excel文档 $PageOfficeCtrl->UserAgent = $_SERVER['HTTP_USER_AGENT']; //若使用谷歌浏览器此行代码必须有,其他浏览器此行代码可不加 $OpenMode = new Java("com.zhuozhengsoft.pageoffice.OpenModeType"); $file_path = preg_replace("/^([\\s\\S]+)\\/Public/", "/Public/", $filenameUTF8); $PageOfficeCtrl->webOpen($file_path, $OpenMode->docReadOnly, "张三"); //此行必须 $this->assign('PageOfficeCtrl', $PageOfficeCtrl->getDocumentView("PageOfficeCtrl1")); $this->display("Public:showEditWord"); exit; } }
<meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <div> <!--************** 卓正 PageOffice 客户端代码开始 ************************--> <script language="javascript" type="text/javascript"> function OnProgressComplete() { document.getElementById("FileMakerCtrl1").WebSaveAsHTML(); //window.parent.myFunc(); //调用父页面的js函数 } </script> <!--************** 卓正 PageOffice 客户端代码结束 ************************--> <?php echo $FileMakerCtrl->getDocumentView("FileMakerCtrl1"); ?> </div> </body> </html>
<li><a href="<?php echo U('Login/logout'); ?> " style="border:none">注销</a></li> </ul> </div> </div> <div style="position:relative;text-align: center;" id='right_bt' class="write_scroll"> <div class="no_main"></div> <?php echo $PageOfficeCtrl->getDocumentView("PageOfficeCtrl1"); ?> <script> document.getElementById("PageOfficeCtrl1").style.height = "90%"; document.getElementById("PageOfficeCtrl1").style.width = "100%"; function BeforeDocumentSaved() { //$(".save_btn").click(); //document.getElementById("PageOfficeCtrl1").Alert("BeforeDocumentSaved事件:文件就要开始保存了."); //return true; } function AfterDocumentSaved(IsSaved) { if (IsSaved) { document.getElementById("PageOfficeCtrl1").Alert("AfterDocumentSaved事件:文件保存成功了.");