Cherka Trova
На этот раз задачка пострашнее)
Есть сайт, работающий на CentOS.
Есть файл fish.doc - шаблон, в котором проставлены метки key
Есть массив вида $tmp[key] = value

Требуется взять текст рыбы и записав вместо ключей значения, сохранить на новом месте.
Все бы ничего, через COM решается вопрос детски. Но вот штука в том, что COM на Лине не работает, как и MS Word. Был вариант перевести все в html и парсить уже проще, но переверстывать многостраничный файл (а он в проекте не один будет) как-то не очень удобно. Простое сохранение как веб-страницы в ворде убивает разрывы страниц, нумерацию и колонтитулы, так что не варинт.

Есть предложения, дамы и господа?


@темы: Программы, PHP

Комментарии
26.10.2010 в 15:29

 
Я буду банален, но, если вы рассматриваете возможность использования других форматов, возможно, подойдет DOCX? С ним довольно-таки легко работать.
26.10.2010 в 15:35

Cherka Trova
La personne mystique пускай docx. Пересохранить не вопрос. Что там и как? (повторюсь, на сервере линь).
26.10.2010 в 15:41

 
Masque, попробуйте сохранить что-нибудь в DOCX и поковыряться)
Вкратце, DOCX – ZIP-архив, содержащий набор XML-файлов. Структура может быть достаточно сложной (несколько вложенных уровней папок), но, в любом случае, обычно нужен только один файл. Можно попытаться распарсить /_rels/.rels (etc) и найти нужную ссылку, можно просто указать, какой конкретно файл редактировать (что-нибудь вроде /word/document.xml), если шаблон меняться не будет (или не автоматически). Не забывайте про кодировку (UTF-8) и всякие тонкости XML вроде зарезервированных символов.
26.10.2010 в 16:01

Cherka Trova
SpiritEagle хорошие статьи на тему того, как считать текст из ворда. но ни слова разумного не видел ничего о том, как этот текст обратно загнать. но все равно попробую, спасибо.
Текст действительно из docx получил. смотрится, правда, безобразно, но уж как есть. теперь вопрос как его запихнуть в новый файл так, чтоб он нормально открывался вордом.
26.10.2010 в 17:04

Cherka Trova
В принципе как вариант не парсить этот xml, а просто взять его как строку да и позаменять чего надо, а потом сохранить обратно.
Знает кто-нибудь, как это сделать после описаного в habrahabr.ru/blogs/php/69417/ ?
*ушел пока курить мануал по ZipArchieve*
26.10.2010 в 17:10

 
Masque, ZipArchive::deleteName, ZipArchive::addFromString ?
26.10.2010 в 17:20

There I was on a July morning, Looking for love
La personne mystique
Как вариант, стоит попробовать.

Masque
www.phpdocx.com/
Есть платная и бесплатная версии, но возможностей бесплатной должно с головой хватить.
26.10.2010 в 17:44

Cherka Trova
La personne mystique я тоже нашел это решение. вроде, сработало.

Господа.. еще такой момент. можно ли как-то в браузере вывести потом этот файл на печать сразу?
27.10.2010 в 20:37

 
можно ли как-то в браузере вывести потом этот файл на печать сразу?
У меня нет готовых решений) В IE на компе с MS Office можно попробовать все тот же COM. Для остальных случаев можно попробовать поковырять в сторону <embed type="application/msword" ...> / <object type="application/msword" ...> или открытия документа во фрейме (для тех случаев, когда браузер настроен на открытие docx-документов внутри браузера).

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail