【问题标题】:Compress MS word docx documents using barcode fonts in PHP scipt在 PHP 脚本中使用条形码字体压缩 MS word docx 文档
【发布时间】:2012-03-22 10:00:08
【问题描述】:

使用Tinybutstrong and openTBS,我在 PHP 中创建了一个脚本,该脚本可以打开多个 docx 模板并用数据库中的值替换大量变量。简而言之,客户可以下载他们独特的文件,添加信息和图片并再次上传。这很好用。但是,如果没有某种问题,我不会在这里发帖。

由于有条形码(我使用条形码字体并将它们嵌入 Word,因为文档将在此过程的后期进行扫描),文档变得很大。他们将轻松获得 7MB,而不是平均 100 KB。这是一个问题,因为每年将扫描大约 20,000 个文档。每年额外增加 +/- 130 GB。

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

Word 可以选择仅嵌入用于缩小尺寸的字体符号。但这不是一个选项,因为主模板需要所有字符都可用。将字体发送给用户也不是一种选择,因为每年有 +/- 20.000 个新字体。

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

【问题讨论】:

  • 所以问题是条形码字体很大,对吗?
  • 正确,字体本身并没有那么大,但是当 word 嵌入它时,它就像 5 MB(它会有所不同)。我不知道将所有条形码嵌入到 docx 中的任何其他方式。 OpenTBS 不支持它,我们确实需要它的功能。我尝试了几个不同的课程,例如PHPWord、PHPdocx 等。 OpenTBS 是最快、最灵活的,并且可以满足我们的需要。除了添加条形码。
  • 嗯。您是否考虑过插入图片?
  • 我做到了,但这会很复杂。对于每个文档,都需要创建、附加到文档、保存和删除新图像。如果 opentbs 知道在创建模板时字体可以被光栅化或者只嵌入使用过的字符,那将是很棒的。

标签: php ms-word docx


【解决方案1】:

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

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

  • OpenTBS 具有轻松替换 DOCX 文件中的图片的功能(参数“op=changepic”)。
  • Barcode2Image 工具在 PHP 中很容易找到。例如:Barcode Generator

那么你只需要像这样编写你的过程:

  1. 加载 DOCX 模板,
  2. 创建条形码的临时图像。
  3. 更改模板内的图像。
  4. 合并模板,保存或发送结果。
  5. 删除临时图像。

只有在模板最终合并后才删除临时图像很重要,因为 OpenTBS 实际上只有在调用 $tbs->Show() 方法时才插入图像。

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

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

【讨论】:

    猜你喜欢
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 2018-12-02
    • 2018-04-05
    • 1970-01-01
    • 2019-02-01
    相关资源
    最近更新 更多