Сжатие документов MS Word DOCX с использованием шрифтов штрих-кода в PHP Scipt - PullRequest
0 голосов
/ 22 марта 2012

Использование Tinybutstrong и openTBS Я создал скрипт на PHP, который открывает несколько шаблонов docx и заменяет множество переменных значениями из базы данных. В двух словах клиенты могут загружать свои уникальные файлы, добавлять информацию и изображения и загружать их снова. Это работает отлично. Но, конечно, я бы не стал публиковать здесь, если бы не было какой-то проблемы.

Из-за штрих-кодов (я использую шрифты штрих-кодов и внедряю их в Word, потому что документы будут сканироваться намного позже в процессе), документы становятся огромными. Вместо 100 КБ в среднем они легко получат 7 МБ. Это проблема, потому что в год будет сканироваться около 20 000 документов. Это дополнительные +/- 130 ГБ в год.

Это длинная история, но нам нужен docx, поэтому мы не можем просто заменить его каким-то шаблоном PHP / MySQL, который был бы гораздо более эффективным.

В Word есть возможность просто вставить символы шрифта, которые используются для обрезки по размеру. Но это не вариант, потому что в главном шаблоне должны быть доступны все символы. Также нельзя отправлять шрифт пользователям, так как каждый год +/- 20 000 новых.

Есть ли другое решение, чтобы сократить размер файла или использовать сжатие. Возможно в Word, PHP, FTP, Apache?

1 Ответ

0 голосов
/ 26 марта 2012

Боюсь, что решение использовать опцию «Вставить шрифты в файл» с «Вставить только символы, используемые в документе» не может быть использовано. Ms Word сохраняет шрифт в специальном формате с расширением ODTTF (например, у вас он есть в «word \ fonts \ font1.odttf»). Но этот формат является двоичным, он плохо документирован и поэтому остается закрытым форматом. Только Ms Word сможет создать такой подфайл.

Поскольку у вас нет более светлого шрифта для штрих-кода, единственное решение, которое я вижу, это использование изображения вместо шрифта для вашего штрих-кода:

  • OpenTBS имеет функцию, позволяющую легко заменить изображение в файле DOCX (параметр " op = changepic ").
  • Инструменты Barcode2Image легко найти в PHP. Например: Генератор штрих-кода .

Тогда вам нужно всего лишь закодировать ваш процесс следующим образом:

  1. Загрузить шаблон DOCX,
  2. Создать временное изображение штрих-кода.
  3. Изменить изображение внутри шаблона.
  4. Объедините шаблон и сохраните или отправьте результат.
  5. Удалить временное изображение.

Важно удалить временное изображение только после последнего слияния шаблона, поскольку OpenTBS фактически вставляет изображение только при вызове метода $ tbs-> Show ().

Также важно использовать разные временные файлы для каждого слияния, поскольку в одно и то же время может происходить много слияний.

Если временные файлы имеют префикс или сохранены в выделенном каталоге, рекомендуется регулярно очищать старые временные изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...