Comments 21
$handle = fopen("document.xml", "r");
Подразумевается, что document.xml уже распакован и лежит в одной директории с скриптом PHP?
Upd: перечитал, так и есть. Лучше это делать скриптом, извлекая содержимое прямо из docx. Так будет намного практичнее.
Касаемо задачи — видел несколько поделок, работающих следующим образом:
— рисуем шаблон .docx, вместо того, что будет изменяться пишем заготовки, вроде _content_, _recipient_, _signature_ и т.д.;
— описанным вами способом заменяем шаблоны на новое содержимое;
— отдаем пользователю содержимое, при выставлении правильного header'а можно как инициировать скачивание файла, так и его отображение в браузере (если в ОС есть, чем просматривать .docx).
Такая-же схема работает и для других офисных приложений.
0
Согласен, что можно извлекать содержимое прямо из docx, заменять его, отправлять пользователю и затем снова заменять на исходный шаблон. Таким образом можно не хранить файл отдельно.
0
а если серьезно — глупо отказываться от готовых решений.
0
Есть навскидку несколько готовых решений?
0
например, www.phpdocx.com
-1
Спс, за наводку
0
Так это платное решение.
0
phpword.codeplex.com/ вот бесплатно
0
Расскажите, почему выбрали docx? Документ должен редактироваться?
Из вашего описания выходит, что нужно только распечатать. Почему не PDF?
Спрашиваю, потому-то делаем примерно такие же задачи. И выбрали генерацию PDF на лету. PDF рисуем mPDF. Бланк изначально нарисовал дизайнер, куски сверстали, остальное рисуем.
Из вашего описания выходит, что нужно только распечатать. Почему не PDF?
Спрашиваю, потому-то делаем примерно такие же задачи. И выбрали генерацию PDF на лету. PDF рисуем mPDF. Бланк изначально нарисовал дизайнер, куски сверстали, остальное рисуем.
+1
Безусловно, какие-то вещи пользователи будут корректировать. До этого мы печатали простые одно-страничные бланки, в которых можно было редактировать только определенные поля. Все это делалось средствами HTML и javascript.
Возможно в дальнейшем договоры, которые нельзя будет изменять будут в PDF, избежать этого не удастся.
Если я правильно понимаю то генерация PDF ресурсоемкая задача.
Возможно в дальнейшем договоры, которые нельзя будет изменять будут в PDF, избежать этого не удастся.
Если я правильно понимаю то генерация PDF ресурсоемкая задача.
0
www.php.net/manual/en/pdf.examples-basic.php
Все достаточно просто.
Если не хочется/нет возможности возиться с расширениями PHP, можно почитать например habrahabr.ru/post/111979/
Все достаточно просто.
Если не хочется/нет возможности возиться с расширениями PHP, можно почитать например habrahabr.ru/post/111979/
0
Если не хочется/нет возможности возиться с расширениями PHP, можно почитать например habrahabr.ru/post/111979/
Этот пост был прочитан одним из первых, проблема в том, что на каждой странице должен стоять колонтитул, и это не просто надпись внизу страницы, а целый абзац, который должен находится слева от основного текста.
Псмотрел
www.phpdocx.comупомянутый выше, возможно это, как раз то, что было нужно. Поскольку там все колонтитулы импортируются из уже созданных ранее в отдельном docx.
0
Не удалось сделать шаблон в ворде а через php подменять только переменные?
0
Попробуйте в своем шаблоне в ворде написать
и удалить букву какую-нибудь и напечатать ее заново.
В xml вы увидите что- то типа
Это означает что стрингреплейсом уже ничего не получится сделать, если только не расставлять переменные руками в xml, что крайне неудобно. Либо стараться сделать в ворде крайне чистое написание слов, что сложно из за ненаглядности.
Чтобы не дай бог какой тег вылез стиля или еще чего. Проблему эту решили у себя. Так что любые переменные в любом месте в документе легко заменяются без проблем с тегами от ворда.
Иванов Иван Иванович
и удалить букву какую-нибудь и напечатать ее заново.
В xml вы увидите что- то типа
Иванов Ива<tag history id="34234"/>н Иванович
Это означает что стрингреплейсом уже ничего не получится сделать, если только не расставлять переменные руками в xml, что крайне неудобно. Либо стараться сделать в ворде крайне чистое написание слов, что сложно из за ненаглядности.
Чтобы не дай бог какой тег вылез стиля или еще чего. Проблему эту решили у себя. Так что любые переменные в любом месте в документе легко заменяются без проблем с тегами от ворда.
+1
Все верно, при редактировании в Word, в document.xml сохраняется последовательность изменений, но если мы заменяем строки в xml с помощью php ничего подобного не происходит.
0
А почему бы через xpath не брать нужную ноду с текстом и заменять содержимое?
p.s. имелось в виду, что при редактировании шаблона документа будут вставляться дополнительные ноды, str_replace для этого не слишком надежно использовать.
p.s. имелось в виду, что при редактировании шаблона документа будут вставляться дополнительные ноды, str_replace для этого не слишком надежно использовать.
0
А вы знаете какую ноду брать?) Документ пляшет как хочет структурой. Мы делали 100% рабочий вариант с поиском и замены переменных в xml-ке ворда. Может написать статейку. Это улучшенный способ, чем автор предложил. Но судя по спросу… не знаю стоит ли.
+1
Sign up to leave a comment.
Создание печатной формы Microsoft Word с помощью PHP