3

有没有人有编辑 docx 模板的经验。我的 php 管理区域需要修改 docx 模板的功能,此功能将被大量使用,因此内存很重要。

我发现 phpword 处于测试阶段,它可以工作但不是 100%

我一直在谷歌上搜索并找到了 phpdocx,有人用过这个,可以给我一些反馈吗?

是否有任何其他解决方案我需要的是能够更改文本,也许是 docx 模板中的图像。

我将准备为一项服务而不是大众支付费用,并且最好是一次性支付许可证费用。

4

4 回答 4

11

你应该试试OpenTBS

它是一个使用模板技术构建 DOCX 的开源 PHP 库。

没有临时目录,不需要额外的 exe。首先使用 Ms Office 创建您的 DOCX、XLSX、PPTX,(ODT、ODS、ODP 也支持,即 OpenOffice 文件)。然后您使用 OpenTBS 加载模板并使用模板引擎更改内容(简单,参见演示)。最后,您将结果保存在您需要的地方。它可以是一个新文件、一个下载流、一个 PHP 二进制字符串。

OpenTBS 还可以更改文档中的图片图表

于 2011-10-24T22:23:44.090 回答
2
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Employee Details</title>
  </head>
  <body>
    <form method="post" action="#">
      <input type="text" name="e_name" />        
      <input type="text" name="e_email" />
      <input type="submit" name="e_submit" />
    </form>
  </body>
  <?php
    if(isset($_POST["e_submit"]))
    {
        $name=(string) $_POST["e_name"];
        $email=(string) $_POST["e_email"];

        $source='template1.docx';
        $destination='template_'.$name.'.docx';
        $temp='template_'.$name.'.docx';

        copy($source,$temp);

        $zip=new ZipArchive;

        $fileXml='word/document.xml';
        if($zip->open($temp) === TRUE)
        {
            $old=$zip->getFromName($fileXml);

            $new=str_replace('{{Name}}',$name,$old);
            $new=str_replace('{{Email}}',$email,$new);

            $zip->deleteName($fileXml);
            $zip->addFromString($fileXml,$new);
            $zip->close();

            header("Content-Type: application/force-download");
            header('Content-Type: application/msword');
            header('Content-Disposition: attachment; filename="'.$destination.'"');

            readfile($destination);
             unlink($destination);
           exit();
        }
    }
  ?>
</html>
于 2017-05-24T07:23:47.483 回答
1

PHP DOCX 模板

http://www.phpclasses.org/package/8247-PHP-Create-Microsoft-Word-documents-from-templates.html

include( 'docxtemplate.class.php' );

$docx = new DOCXTemplate( 'invoice.tpl.php' );

$docx->set(array(
    'org' => 'MyCompany LLC',
    'addr' => 'Green Street, 82'
));

$docx->downloadAs('invoice.docx');

编辑:修正了正确的方法名称 downloadAs() 而不是 download()

于 2013-09-18T06:30:11.197 回答
0

Phpdocx 适合您的需求。在 docx 文档上使用基于 $variable$ 的非常简单的模板格式,因此使用该库非常容易。我使用了几个月,对我来说是一个很好的工具。

于 2011-10-24T15:04:27.670 回答