Laravel和phpword的可能性

时间:2018-07-23 13:37:24

标签: php laravel phpword

我使用laravel,但我认为这个问题更多是关于php word。

此软件包是否有可能在某些时候导出带有自定义文本的单词?

例如,我的单词模板包含三个要更改的位置。因此,可以使用phpword在这三个位置导出带有自定义文本的模板吗?

我可以只更改部分文本还是必须更改所有段落?

感谢您的信息。

1 个答案:

答案 0 :(得分:1)

您可以使用setValue()方法替换文本。

取决于所使用的版本,版本0.12.0及更高版本 \ PhpOffice \ PhpWord \ TemplateProcessor

public function setValue($search, $replace, $limit = self::MAXIMUM_REPLACEMENTS_DEFAULT)
{
    if (is_array($search)) {
        foreach ($search as &$item) {
            $item = self::ensureMacroCompleted($item);
        }
    } else {
        $search = self::ensureMacroCompleted($search);
    }
    if (is_array($replace)) {
        foreach ($replace as &$item) {
            $item = self::ensureUtf8Encoded($item);
        }
    } else {
        $replace = self::ensureUtf8Encoded($replace);
    }
    if (Settings::isOutputEscapingEnabled()) {
        $xmlEscaper = new Xml();
        $replace = $xmlEscaper->escape($replace);
    }
    $this->tempDocumentHeaders = $this->setValueForPart($search, $replace, $this->tempDocumentHeaders, $limit);
    $this->tempDocumentMainPart = $this->setValueForPart($search, $replace, $this->tempDocumentMainPart, $limit);
    $this->tempDocumentFooters = $this->setValueForPart($search, $replace, $this->tempDocumentFooters, $limit);
}

方法链接-> https://github.com/PHPOffice/PHPWord/blob/develop/src/PhpWord/TemplateProcessor.php#L208

0.12.0之前的版本使用\ PhpOffice \ PhpWord \ Template

public function setValue($search, $replace, $limit = -1)
{
    foreach ($this->headerXMLs as $index => $headerXML) {
        $this->headerXMLs[$index] = $this->setValueForPart($this->headerXMLs[$index], $search, $replace, $limit);
    }
    $this->documentXML = $this->setValueForPart($this->documentXML, $search, $replace, $limit);
    foreach ($this->footerXMLs as $index => $headerXML) {
        $this->footerXMLs[$index] = $this->setValueForPart($this->footerXMLs[$index], $search, $replace, $limit);
    }
}

方法链接-> https://github.com/PHPOffice/PHPWord/blob/e35838f7d7928b2308df3f7f0ef6d49bf96f453c/src/PhpWord/Template.php#L131