Cherka Trova
На этот раз задачка пострашнее)
Есть сайт, работающий на CentOS.
Есть файл fish.doc - шаблон, в котором проставлены метки key
Есть массив вида $tmp[key] = value
Требуется взять текст рыбы и записав вместо ключей значения, сохранить на новом месте.
Все бы ничего, через COM решается вопрос детски. Но вот штука в том, что COM на Лине не работает, как и MS Word. Был вариант перевести все в html и парсить уже проще, но переверстывать многостраничный файл (а он в проекте не один будет) как-то не очень удобно. Простое сохранение как веб-страницы в ворде убивает разрывы страниц, нумерацию и колонтитулы, так что не варинт.
Есть предложения, дамы и господа?
Вкратце, DOCX – ZIP-архив, содержащий набор XML-файлов. Структура может быть достаточно сложной (несколько вложенных уровней папок), но, в любом случае, обычно нужен только один файл. Можно попытаться распарсить /_rels/.rels (etc) и найти нужную ссылку, можно просто указать, какой конкретно файл редактировать (что-нибудь вроде /word/document.xml), если шаблон меняться не будет (или не автоматически). Не забывайте про кодировку (UTF-8) и всякие тонкости XML вроде зарезервированных символов.
habrahabr.ru/blogs/php/72745/
habrahabr.ru/blogs/php/69417/
Текст действительно из docx получил. смотрится, правда, безобразно, но уж как есть. теперь вопрос как его запихнуть в новый файл так, чтоб он нормально открывался вордом.
Знает кто-нибудь, как это сделать после описаного в habrahabr.ru/blogs/php/69417/ ?
*ушел пока курить мануал по ZipArchieve*
Как вариант, стоит попробовать.
Masque
www.phpdocx.com/
Есть платная и бесплатная версии, но возможностей бесплатной должно с головой хватить.
Господа.. еще такой момент. можно ли как-то в браузере вывести потом этот файл на печать сразу?
У меня нет готовых решений) В IE на компе с MS Office можно попробовать все тот же COM. Для остальных случаев можно попробовать поковырять в сторону <embed type="application/msword" ...> / <object type="application/msword" ...> или открытия документа во фрейме (для тех случаев, когда браузер настроен на открытие docx-документов внутри браузера).