php работа с файлами doc

Шаблонный DOCX на PHP

В общем, долго лазил по форумам, смотрел различные варианты, но так и не понял, как реализовать шаблонных DOCX-документа на php странице. Идея такая:
1) Есть php страница с текстом (допустим это текст договора или отчет)
2) В документе есть поля для ввода значений, или выбора из базы данных (переключатели)
3) возможно сохранить этот документ уже с новыми значениями.

p.s. если можно на примитивно-пигмейском, голова уже взрывается

Помощь в написании контрольных, курсовых и дипломных работ здесь.

PHP + docx
Приветствую всех! Дали задание в ВУЗе, примерно следующее: «Сделать web-формы с элементами.

Есть ли PHP библиотека для работы с файлами doc и docx?
Есть ли PHP библиотека для работы с файлами doc и docx? Если нет, то как сформировать файл.

php работа с файлами doc. Смотреть фото php работа с файлами doc. Смотреть картинку php работа с файлами doc. Картинка про php работа с файлами doc. Фото php работа с файлами docИспользуя PHP считать doc/docx файл и сгенерировать его в PDF
Я использую composer и подключаю 2 библиотеки : PHPWord Dompdf Возник вопрос, как.

Создание/склеивание doc\docx файла из шаблона doc\docx с заменой ключевых слов
Подскажите, как можно такое реализовать? Я узнал, что в rtf нельзя делать разрыв страницы, а.

Решение

Зачем по форумам лазить когда есть офф. доки?
Вот библиотека.
Примеры там указаны, но вдруг и это не найдете. Примеры.

Я в свое время писал обертку под этот класс.

по-другому не получалось, ругалось, что его нет.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

php скрипт HTML в DOC или DOCX
Может кто нибудь знает где взять нормальный скрипт для сабжа обрыл весь интернет, нашел всего.

php работа с файлами doc. Смотреть фото php работа с файлами doc. Смотреть картинку php работа с файлами doc. Картинка про php работа с файлами doc. Фото php работа с файлами docШаблонный класс
Доброго времени суток. Опять пишу здесь(( помогите ребятки.Сидел много над проблемой и честное.

Шаблонный класс
Я запутался с шаблонами. Не пойму никак как вызвать конструктор с введенным в функции check_int().

Источник

Честная генерация DOCX на PHP. Часть 1

php работа с файлами doc. Смотреть фото php работа с файлами doc. Смотреть картинку php работа с файлами doc. Картинка про php работа с файлами doc. Фото php работа с файлами docЗдравствуйте, уважаемое хабрасообщество! Как-то раз был на хабре интересный материал про генерацию doc-файлов средствами PHP. К сожалению, больше на хабре ничего на эту тему я не нашел. На тот момент я разработал собственное решение.
Оно состояло в том, чтобы генерировать .docx файлы. Аргументы были следующие:

Структура файла

Возле скрипта должен появиться файл Example.docx При этом не забываем создать саму структуру файлов. Для её получения пользуемся пресловутым MS Office и Winrar’ом. После сборки пробуем открыть в через MS Office. В случае незначительных ошибок в XML ворд выдаст предупреждение, что в документе содержатся ошибки, но и предложит их исправить. Если же документ собран совсем неправильно, ворд лишь ругнется и откажется открывать.

Вставляем текст

Для получения требуемого XML текста я использовал тот же подход ламера: печатал текст в ворде, извлекал внутренности и изучал. Вот какой XML у меня получился для обычного абзаца:

Нетрудно понять, что нужно изменить, чтобы получить требуемое выравнивание и размер текста. В тег w:t вставляем наш текст, но без переноса строк!
Вводим в наш класс метод assign, и генератор становится таким:

Вот в принципе и всё. В следующий раз мы научимся вставлять изображения.
Просто, не правда ли? Весь код с примером.
UPD. Сделал подсветку кода.
UPD 2. Читайте продолжение.

Источник

PHPWord — создание MS Word документов средствами PHP

Дата публикации: 2016-02-25

php работа с файлами doc. Смотреть фото php работа с файлами doc. Смотреть картинку php работа с файлами doc. Картинка про php работа с файлами doc. Фото php работа с файлами doc

php работа с файлами doc. Смотреть фото php работа с файлами doc. Смотреть картинку php работа с файлами doc. Картинка про php работа с файлами doc. Фото php работа с файлами docphp работа с файлами doc. Смотреть фото php работа с файлами doc. Смотреть картинку php работа с файлами doc. Картинка про php работа с файлами doc. Фото php работа с файлами doc

Актуальную версию библиотеки PHPWord, вы найдете на сервисе GitHub.

php работа с файлами doc. Смотреть фото php работа с файлами doc. Смотреть картинку php работа с файлами doc. Картинка про php работа с файлами doc. Фото php работа с файлами doc

php работа с файлами doc. Смотреть фото php работа с файлами doc. Смотреть картинку php работа с файлами doc. Картинка про php работа с файлами doc. Фото php работа с файлами doc

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

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

php работа с файлами doc. Смотреть фото php работа с файлами doc. Смотреть картинку php работа с файлами doc. Картинка про php работа с файлами doc. Фото php работа с файлами doc

Установка PHPWord

Установка PHPWord, может быть выполнена двумя способами. Первый способ – ручной, при котором Вы скачиваете архив с последней актуальной версией PHPWord, далее, выполняете распаковку, копируете файлы в собственный проект и подключаете на соответствующих страницах. То есть достаточно стандартный способ. И второй – так сказать, автоматический способ установки, используя инструмент Composer, который мы будем использовать в данном уроке.

Кстати, Вы, наверное, заметили, что в своих уроках, для установки различных библиотек, я призываю Вас использовать Composer. Так как для простых проектов, в ручную, вполне можно скачивать необходимые элементы, но если мы работаем над более сложным скриптом, то порой затруднительно скачать все необходимые элементы и правильно их установить.

Итак, открываем командную строку и переходим в каталог нашего проекта, используя команду “CD имя папки”.

php работа с файлами doc. Смотреть фото php работа с файлами doc. Смотреть картинку php работа с файлами doc. Картинка про php работа с файлами doc. Фото php работа с файлами doc

Далее, используя конструкцию “composer require”, указываем от какой библиотеки “зависит” наш проект и выполняем инструкцию.

Источник

Работа с phpWord. Заполнение шаблона договора docx

php работа с файлами doc. Смотреть фото php работа с файлами doc. Смотреть картинку php работа с файлами doc. Картинка про php работа с файлами doc. Фото php работа с файлами doc

Шаблон договора для phpWord

Начну с постановки задачи. А она довольно простая — работая над сайтом клиента по прокату автомобилей возникла необходимость несколько автоматизировать рутинные операции. В частности требовалось при оформлении аренды на сайте автоматически заполнять в договоре некоторые поля. Вот этим и займемся.

Для работы нам потребуется замечательная библиотека phpWord. Она имеет огромное количество возможностей, мы же рассмотрим ее способность заполнять готовые шаблоны документов.

Итак, мы скачали phpWord, распаковали архив и залили на веб-сервер. В моем случае речь идет о версии 0.6.2 Beta.

php работа с файлами doc. Смотреть фото php работа с файлами doc. Смотреть картинку php работа с файлами doc. Картинка про php работа с файлами doc. Фото php работа с файлами doc

phpWord заливка на сервер

Теперь нам необходимо подготовить сам шаблон. Для этого запускаем MS Word или даже Wordpad и набираем текст договора. Для примера я набросал тестовый договор, который выглядит вот так (кликабельно):

php работа с файлами doc. Смотреть фото php работа с файлами doc. Смотреть картинку php работа с файлами doc. Картинка про php работа с файлами doc. Фото php работа с файлами doc

Давайте определимся, что в этом шаблоне мы поручим заполнять php скрипту. К примеру, пусть это будет номер договора с датой, а также ФИО продавца и номер паспорта. Теперь давайте превратим наш договор в шаблон, с которым будем работать дальше.

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

ДанныеПеременная
Номер договораd_num
Дата договораd_date
Фамилияlast_name
Имяname
Отчествоsurname

Замечательно. Теперь делаем следующее — на тех местах, где у нас данные, мы их удаляем и вставляем имена переменных в виде

Т. е. там, где у нас номер договора 123 мы пишем $ и т. д. для всех переменных. В итоге получится вот такой шаблон договора:

php работа с файлами doc. Смотреть фото php работа с файлами doc. Смотреть картинку php работа с файлами doc. Картинка про php работа с файлами doc. Фото php работа с файлами doc

Шаблон договора для phpWord

php работа с файлами doc. Смотреть фото php работа с файлами doc. Смотреть картинку php работа с файлами doc. Картинка про php работа с файлами doc. Фото php работа с файлами doc

Отнеситесь к этому внимательно — ошибок допускать нельзя. Сохраняем полученный шаблон под именем Template.docx (можно назвать по своему).

Внимание! При сохранении документа в Word 2010 поставьте чекбокс «Поддерживать совместимость с предыдущими версиями Word» иначе работать не будет.

Вот теперь наш шаблон готов, теперь давайте научим php заполнять его.

Создаем php файл (к примеру, index.php) со следующим содержимым:

Вот и все. Если теперь мы запустим выполним наш скрипт, то в итоге получим заполненный данными шаблон договора:

php работа с файлами doc. Смотреть фото php работа с файлами doc. Смотреть картинку php работа с файлами doc. Картинка про php работа с файлами doc. Фото php работа с файлами doc

Как видно, скрипт успешно заполнил шаблон, вот только с русскими символами беда — они выглядят не так, как задумывалось. Как решить эту проблему читайте в статье.

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

14 комментариев: Работа с phpWord. Заполнение шаблона договора docx

У меня тоже PHP Word на выходе отдает какой-то битый файл, который не открывается в Word. При этом файл не пустой, но почему-то имеет неверный формат. При просмотре файла в Editre- в нем полно всякой ерунды, включая заголовки сайта, меню, куки php. Не знаете в чем проблема? Почему библиотека phpword не работает как надо?

метод saveAs() надо вызвать, тока тогда сохранит изменения

А как вообще эту библиотеку прикрутить к тому же денверу, сказано скиньте в ваш вебсервер, куда уже только не кидал не видит он её. кидал home\домен\www\ кидал так же home\licalhost\

А процедурным стилем как вносить данные в документ?

Не работает ваш пример.

скачал ваши исходники вот код index.php
loadTemplate(‘Template.docx’);
$document->setValue(‘d_num’, ’777′);
$document->setValue(‘d_date’, ’04.10.2014′);
$document->setValue(‘last_name’, ‘Никоненко’);
$document->setValue(‘name’, ‘Сергей’);
$document->setValue(‘surname’, ‘Васильевич’);
$document->save(‘Template_full.docx’);
?>

вот эта строка вызывает подозрения require_once ‘PHPWord.php’; вы хотите подключить файл ‘PHPWord.php’ которого нет,среди скачанных файлов, что вообще за бред? зря только время потратил.

А скачать по самой первой ссылке что мешает?

По первой ссылке нет нужного файла.

Общее замечание. Статья относится к библиотеке 2011 года PHPWord. Она была такая, и исходники есть, и всё так. На гитхабе сейчас лежит её далёкий потомок PhpWord. В нём изменено очень много чего (например, не надо кривить исходники ради корректной работы с русским языком). И, в частности, пример выглядит радикально по-другому:

require_once(‘vendor/autoload.php’); // ставится ТОЛЬКО через Composer!
$_doc = new \PhpOffice\PhpWord\TemplateProcessor(‘Template.docx’);
$_doc->setValue(‘d_num’, ’10/29-77-Ю’); //номер договора
// вывод непосредственно в браузер
header(‘Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document’);
header(‘Content-Disposition: attachment;filename=»dogovor.docx»‘);
header(‘Cache-Control: max-age=0’);
$_doc->saveAs(‘php://output’);
die;

Думаю, это замечание (о наличии новой версии либы с новыми вызовами) надо добавить в описание. Кому что удобнее: свежая либа с композером и хреновой горой пхпового мусора, или старая, но с багами, пусть решает сам.
dixi

Источник

Честная генерация DOCX файлов на PHP. Часть 2

php работа с файлами doc. Смотреть фото php работа с файлами doc. Смотреть картинку php работа с файлами doc. Картинка про php работа с файлами doc. Фото php работа с файлами docЗдравствуйте, уважаемое хабрасообщество!
Продолжаем историю про генерацию DOCX средствами PHP.

Ещё раз

Но сначала обо всем по порядку. С момента публикации прошлой статьи было написано достаточное количество комментариев: эмоциональных и по делу; у проекта PHPDocx на гитхабе появилось несколько форков. Всё это говорит о том, что эта тема достаточно актуальна. Но некоторые разработчики не понимают самой сути моего подхода. А подход этот заключается в использовании наследования: класс генератор должен быть наследником ZipArchive. Послушайте, ну если не хотите Вы использовать наследование, установите PHP 5.4 и используйте traits, в конце концов! Этот подход несравненно лучше, чем работать постоянно через одно свойство:

Для чего вообще нужно генерить DOCX на PHP? Некоторые разработчики не понимают, зачем вообще это нужно. Я ориентировался на то, чтобы сделать возможность сохранить web-страницу в формате Word. Лично я использую свой класс для сохранения отчетов Яндекс.Метрики в формате DOCX. Пользователь seriyPS спросил, зачем я разбивал текст на строки? Я это делал, предполагая, что текст является полем из БД, а перенос строки — новый абзац. В общем, не будем этого делать для ясности. Сделайте сами разбивку на абзацы.
Кроме того, наш генератор должен иметь максимально удобный API. Я думаю, мне удалось его реализовать. API состоит всего из трех методов: конструктора, assign, create.
Ну что ж, поговорили, и хватит. Приступим.

Что нового

Во-первых, я существенно изменил код, используемый в той статье, и оформил это всё в полноценную OpenSource библиотеку. Ссылки в конце. А сейчас по пунктам:

1. Класс OfficeDocument и WordDocument

Как мы уже поняли, в корне архива хранятся файлы, необходимые документу MS Office в целом. В папке word/ хранятся документы, необходимые документу MS Office Word непосредственно. Решение напрашивается само собой: сделать класс общий для документов MS Office, и класс-наследник для Word-документов непосредственно.
Сразу опишу структуру:

Зачем я это сделал. Это задел на будущее, в котором мы будем генерить файлы MS Excel классом XlsxDocument.
Давайте разберем внутренности.

2. Динамическое создание связей

Внутри docx-файла существуют файлы _rels/.xml и word/_rels/document.xml.rels. Они подключают файлы в документ. Если не описать какой-либо файл в этих структурах, то он просто окажется лишним весом в docx-документе. Таким образом можно просто прятать инфу внутри docx. Мы же в конструкторах создадим массивы внутренних связей между XML-документами. Вот, например, связи для документа MS Office:

Идентификатором подключаемого файла является запись «rIdN». Файлы app.xml и core.xml являются статичными. Мы их просто будем упаковывать в архив методом add_rels, параллельно создавая XML-файл описания связей _rels.xml:

Обращаю внимание, что add_rels описан в OfficeDocument, а используется в обоих классах: OfficeDocument и WordDocument, поскольку внутри docx файла существует два документа _rels.xml, описывающих зависимости. Это выйгрыш ООП подхода, который я предложил, и здесь методология, предложенная VolCh, точно не подойдет.
В результате получаем такой типовой _rels:

Файл word/document.xml мы сгенерим и подключим динамически. Надеюсь, с динамическим созданием связей понятно. Теперь со вставкой изображения.

Учимся вставлять изображения

Сначала приведу XML-фрагмент, полученный экспериментальным методом, для вставки в document.xml, чтобы получить изображение в Word-документе:

Нам нужно будет заменить на идентификатор подключенного изображения, а также прописать и .
За вставку изображения, как и за вставку текста отвечает один метод API — assign:

Кто умеет читать код, заметит, что в методе используется хитрая метрическая система. Называется она English Metric Units (EMU). Почитать об этом можно на английской википедии. Кратко: можно получить EMU из px умножением на число. Только вот на википедии написано, что это число равно 12700. Я же экспериментально выяснил, что оно равно 8625. При этом множителе картинка отображалась пиксель в пиксель.
Ну и конечно, подключаем непосредственно файл изображения в структуру связей:

В результате

В результате мы получили полноценную библиотеку. Теперь мы можем использовать её вот так:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *