在PHP scipt中使用条形码字体压缩MS word docx文档

在PHP scipt中使用条形码字体压缩MS word docx文档,php,ms-word,docx,Php,Ms Word,Docx,我用PHP创建了一个脚本,打开多个docx模板,并用数据库中的值替换许多变量。简而言之,客户端可以下载他们独特的文件,添加信息和图片,然后再次上传。这个很好用。但当然,如果没有什么问题,我不会在这里发布 由于条形码(我使用条形码字体,并将其嵌入Word中,因为文档将在扫描过程中进行扫描),文档变得巨大。它们很容易得到7MB,而不是平均100KB。这是一个问题,因为每年大约有20000份文件需要扫描。这是一个额外的+/-130 GB每年 说来话长,但我们需要docx,所以我们不能简单地用某种效率更

我用PHP创建了一个脚本,打开多个docx模板,并用数据库中的值替换许多变量。简而言之,客户端可以下载他们独特的文件,添加信息和图片,然后再次上传。这个很好用。但当然,如果没有什么问题,我不会在这里发布

由于条形码(我使用条形码字体,并将其嵌入Word中,因为文档将在扫描过程中进行扫描),文档变得巨大。它们很容易得到7MB,而不是平均100KB。这是一个问题,因为每年大约有20000份文件需要扫描。这是一个额外的+/-130 GB每年

说来话长,但我们需要docx,所以我们不能简单地用某种效率更高的PHP/MySQL模板替换它

Word可以选择只嵌入用于剪切大小的字体符号。但这不是一个选项,因为主模板需要所有字符都可用。它也不是向用户发送字体的选项,因为每年有+/-20000个新字体


是否有其他解决方案来减少文件大小或使用压缩。也许在Word、PHP、FTP、Apache中?

恐怕无法利用使用选项“在文件中嵌入字体”和“仅在文档中嵌入字符”的解决方案。Ms Word使用带有扩展名的特殊格式保存字体(例如,在“Word\fonts\font1.odttf”中)。但这种格式是二进制的,它的文档记录似乎很糟糕,因此它仍然是一种专有格式。只有Ms Word才能构建这样的子文件

由于条形码没有任何较轻的字体,我能看到的唯一解决方案是使用图像而不是条形码的字体:

  • OpenTBS有一个功能,可以轻松替换DOCX文件(参数“”)中的图片
  • Barcode2Image工具在PHP中很容易找到。例如:
然后,您只需按照以下方式对流程进行编码:

  • 加载DOCX模板
  • 创建条形码的临时图像
  • 更改模板内的图像
  • 合并模板,并保存或发送结果
  • 删除临时图像
  • 只有在模板最终合并之后才删除临时映像非常重要,因为OpenTBS实际上只有在调用$tbs->Show()方法时才插入映像

    对于每次合并,使用不同的临时文件也很重要,因为许多合并可能同时发生


    如果临时文件有前缀或保存到专用目录中,则建议定期清理旧的临时图像。

    所以问题在于条形码字体太大,对吗?对,字体本身并没有那么大,但当word嵌入它时,它会有5 MB(不同)。我不知道还有什么其他方法可以将所有条形码嵌入docx。OpenTBS不支持它,我们真的需要它的功能。我尝试了几个不同的类,例如PHPWord、PHPdocx等等。OpenTBS是最快、最灵活的,并且完全满足我们的需要。当然可以添加条形码。你考虑过插入图像吗?我考虑过,但那会很复杂。对于每个文档,都需要创建一个新的图像,将其附加到文档,保存并擦除。不知何故,如果opentbs理解在创建模板时字体可以光栅化,或者只嵌入使用过的字符,那就太好了。