wrklst/docxmustache

基于mustache模板语言的docx模板操作类


README

DocxMutache Logo

适用于Laravel 10.x的DocxMustache

Software License Quality Score Build Status StyleCI

适用于Laravel 10.x的docx模板操作类,基于mustache模板语言。这个类目前还在快速发展中,更像是一个原型,可能会很快发生变化并可能破坏一些东西。

Word中的模板示例这个包可以帮助你使用具有mustache语法的docx文件作为模板,将样式丰富的文档与来自任何数据源的信息合并。它可以替换文本和图片,并支持基本的HTML样式(加粗、斜体、下划线)。

安装

composer require wrklst/docxmustache

请检查下面的依赖项和示例文件夹中的配置和使用方法。

HTML转换

当前的HTML转换是基本的,只支持加粗、斜体和下划线的单次运行,不支持这些的组合。所有非HTML的值都需要使用htmlspecialchars($value, ENT_COMPAT, 'UTF-8');进行转义,并在其前面加上前缀*[[DONOTESCAPE]]*,这样类就知道在将其转换为openXML之前不要转义HTML。

替换图片

图片需要是一个可访问的URL,其中包含支持的格式的图片。URL值需要放置在图片的alt文本描述字段中。图片将被重新采样以符合占位符图片的约束。图片值需要使用伪标签格式化,例如:[IMG-REPLACE]http://placehold.it/350x150[/IMG-REPLACE]

示例

请查看示例文件夹中的示例,以了解如何使用此类的基本方法。

DOCX转换为PDF

转换为PDF需要服务器上安装libreoffice-common(用于转换)。在基于ubuntu/debian的服务器上使用sudo apt install libreoffice-common。如果你需要支持将docx文档转换为pdf时Arial字体,也请安装ttf-mscorefonts sudo apt-get install ttf-mscorefonts-installer

其他依赖项

此包依赖于几个Laravel特定的函数。它可以很容易地移植到其他框架或移植为不依赖于框架的版本。除了Laravel的依赖项外,页面还使用了以下包

Laravel特定的依赖项(仅当移植到非Laravel环境时相关)

贡献

如果您想为此包做出贡献,请随意提交一个pull request以及相应的issue,我们将很乐意进行审查和讨论。

为什么还需要另一个openXML / docx模板解决方案?

市面上有一些类可以帮助编写和/或更改Word文档的内容,有些是商业许可证,有些是免费的。对于我们特定的目的,我们不需要很多库所具有的功能——我们需要一个简单的解决方案,允许轻松替换值和图片,并以简单直接的方式遍历数据。

许多其他库使用克隆来重复具有自定义模板语法的一个块,而不是使用现有的模板语法。我们使用常用的mustache语法,也可以在需要的情况下重复内容的多维。

其他用于操作openXML Word文档的PHP类