【问题标题】:Replacing placeholders in a link in Word document using PHPWord使用 PHPWord 替换 Word 文档中链接中的占位符
【发布时间】:2015-12-24 14:45:15
【问题描述】:

我一直在使用 PHPWord 在 PHP 中使用 setValue 替换 word 文档中的文本,效果很好。但是 PHPWord 不会替换链接文本 URL 中的占位符。有没有办法做到这一点?

我进行了很多搜索以找到解决此问题的方法,但没有得到任何解决。如果有人知道如何使用其他包(而不是 PHPWord)来做到这一点,我也准备好更改为该包。

在获得两票关闭此主题后添加:如果您不知道我在说什么,请不要投票关闭此主题。这里有一个关于 PHPWord 的具体问题,PHPWord 的用户会清楚地理解。我也没有要求其他人为我找到一个新的包裹。可能有用户是如何被 PHPWord 的这个限制所困扰,并找到了一个替代包来克服这个限制,我在谷歌搜索后无法找到。

【问题讨论】:

    标签: php phpword


    【解决方案1】:

    我最终创建了一个自定义解决方案,以使用 Ziparchive 类在 PHP 中打开 .zip 文件并在以下位置进行搜索替换:

    document.xml - 文档的内容在这个文件中 footerX.xml, headerX.xml - X 是一个从 1 到 N 的数字。因此,如果您的文档中只有一个页眉有 5 或 10 或 100 页,那么您的页眉内容将在 header1.xml 中;如果您的文档中有 2 个标题,那么您将在 header1.xml 和 header2.xml 中包含这 2 个标题内容等等。

    rels/document.xml.rels - 文档中的链接要么内联存储在 document.xml 中,要么存储在此 document.xml.rels 文件中。

    rels/footerX.xml.rels、rels/headerX.xml.rels - 页眉和页脚中的链接存储在这些文件中的内联中。

    更改链接示例:

    $zip = new \ZipArchive();
    if ($zip->open($docFile) === TRUE) {
        $content = $zip->getFromName('word/_rels/document.xml.rels');
        $content = str_replace('google.com', 'stackoverflow.com', $content);
        $zip->addFromString('word/_rels/document.xml.rels', $content);
        $zip->close();
    }
    

    【讨论】:

      猜你喜欢
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-03
      相关资源
      最近更新 更多