Прочитать содержимое файла phpword

Обновлено: 06.07.2024

Используя PHPWord, я пытаюсь выровнять правильное поле даты в шаблоне слова. $right = array('align' => 'right'); $objTextRun = $firstSection->addTextRun(array_merge($right, $singleLineHeight).

Я установил и установил PHP Word на PHPStorm (IDE). Я пытаюсь прочитать строку " учиться со вчерашнего дня, жить на сегодня, надеяться на завтра. " из документа Word под названием "helloWorld.doc.

Я использую PHPOffice/PHPWord в своем приложении Laravel. Он используется для создания документа.docx с результатами в таблицах. Это отлично подходит для документа из 3 таблиц с 6 строками, но когд.

Я использую phpword для записи документов, но теперь мне нужно написать мой документ в 2 столбцах. У меня есть набор текстов, которые я получаю в цикле. Я понял, что вы можете использовать атрибут .

$PHPWord = new PHPWord(); $section = $PHPWord->createSection(); $table = $section->addTable(); $i = 1; $document = $PHPWord->loadTemplate('/var/sitLims/web/uploads/lmsSyllabus/lmsSyllabus.

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

Мой PHP генерирует документ Word, но он не будет отображать возврат каретки. Мой CKEditor переводит возврат каретки в любой, <br>, or <div>asdf</div> Когда документ Word будет соз.

У меня проблема с использованием плагина phpword. Я пытаюсь изменить стиль, но я могу изменить фон ячейки, и другие параметры рассматриваются им. $styleTable = array('borderColor'=>'006699', 'bo.

Я загрузил пакет PHPWord_0.6.2_Beta.zip из этот сайт Есть 2 справочника: Примеры и PHPWord, и 1 файл: PHPWord.php Я поместил каталог PHPWord и PHPWord.php в application/third_party и создал новую б.

Я пытаюсь изменить плагин PHPWord, чтобы лучше соответствовать моим потребностям. Составив список разделов, которые имеет основной класс PHPWord, я могу сделать так, чтобы я мог вставлять разделы в.

Мне было интересно, есть ли в любом случае левый и правый выравнивать текст в одной строке. Так, например, в резюме будет указано название компании, выровненное слева, и дата, выровненная вправо, в.

PHPWord читает файлы docx с оберткой каждого w: r в новый абзац. кто-нибудь знает, как решить эту проблему? Буду признателен за любую помощь. Спасибо.

Мне нужно преобразовать пункт html taged в текстовый документ. Например, у меня есть такой текст <ul><li>One</li><li>Two</li><li>Three</li></ul> прео.

Я работаю над генератором отчетов, но поскольку PHPWord не заменяет изображения, я должен сначала создать для нуля шаблон, чтобы добавить логотип клиента. Таким образом, я могу создать и загрузить .

Я хочу прочитать текст из файла .docx за строкой и сохранить данные каждой строки в массиве, поскольку .docx - это zipped файл, который я хочу преобразовать в файл .doc чтобы я мог читать файл, исп.

Я пытаюсь создать docFiles на моем webapp. Сначала я думал об использовании какого-либо инструмента в Frontend, например, в инструменте jquery.wordexport.js от Markswindolls. Но поскольку функций, .

Я пытаюсь использовать PHPWord для создания текстового документа, который будет включать динамические данные, вытащенные из базы данных MySQL. База данных имеет кодировку MySQL: UTF-8 Unicode (utf8.

Я использовал phpword-плагин для создания текстовых файлов в моем проекте, но у меня есть проблема, что абзац не выравнивал центр, например: Но я хочу та

Я хотел бы сохранить значение базы данных в переменной. По какой-то причине он работает не так, как ожидалось. Ниже приведен код в контроллере: public function show(Word $word) < // $curriculum = C.

Хорошо, вот сценарий. Мне нужно создать около 200 документов MS Word на основе данных, собранных и сохраненных в моей базе данных. Пользовательский вариант создания документов документов с фотограф.

Я пытаюсь вставить сноску в свой сгенерированный документ с помощью phpword. Предположим следующее: $phpWord = new \PhpOffice\PhpWord\PhpWord(); $content tag-list"> phpword

Я пытаюсь использовать PHPWord для создания текстовых документов. И документ может быть сгенерирован успешно. Но есть проблема, когда мой сгенерированный документ будет сохранен на сервере. Как я м.

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

Я хочу извлечь содержимое из файла docx во время загрузки, но я получаю эту ошибку: Объект класса PhpOffice\PhpWord\PhpWord не может быть преобразован в строку Any Solution, пожалуйста, дайте мне з.

Я использую PHPWord для редактирования документов Word. Как я могу использовать его для удаления всей страницы из документа?

Используя phpWord в моем приложении, я пытаюсь клонировать блок в шаблоне следующим образом: $ <br> You may also notice that theres one text break (empty paragraph) before this one t.

обычно, когда я запускаю этот запрос, он всегда будет извлекать все данные в таблице. но теперь он просто берет ряд данных в таблице. Я пытаюсь экспортировать данные в Microsoft Wor с помощью phpwo.

Я хочу сгенерировать и сохранить файл.rtf в laravel 5.2. Я могу сгенерировать PDF файл. Но я не могу найти решение для RTF. Может ли кто-нибудь сказать мне, есть ли библиотека или пакет для этого?

У меня есть PHP REST API, написанный с SLIM Framework, у меня есть api-вызов, который создает файл docx и принудительно загружает файл. $filename = 'invitation.docx'; $templateProcessor->save($f.

Я использую PhpWord, чтобы взять мой документ, сгенерированный PHP, и превратить его в документ Word. $phpWord = new \PhpOffice\PhpWord\PhpWord(); $html tag-list"> phpword

Я пытаюсь загрузить файл.docx с помощью PHPWord, установить в нем значение и сохранить файл. Проблема заключается в сохраненном файле, который выдается в виде документа с пустым словом размером 7 К.

Как добавить текстовый разрыв или перейти к следующей строке/строке во время прогона текста? Я попытался просто сделать $section->addTextBreak(2); в то время как в тексте, но он просто добавил р.

Я использую PHPWord для создания отчета. Когда я создаю раздел, он автоматически добавляет разрыв страницы, который я хочу. Есть ли способ удалить добавленный разрыв страницы? или Есть ли способ cr.

Я создаю файлы .docx из шаблона с помощью PHPWord . Он отлично работает, но теперь я хочу преобразовать сгенерированный файл в PDF . Сначала я попытался использовать tcpdf в комбинации с PHPWord $w.

Я создаю слово doc, используя PHPWord. Содержимое документа динамическое, а содержимое может содержать HTML-тег, например: <strong>Problem statement</strong> <p>The text may be<.

Рубрики

А так же делитесь знаниями, знакомьтесь с новыми утилитами и приложениями, учитесь у всегда готовых помочь ответить на самые сложные вопросы во всех сферах IT и программирования. Станьте гуру и экспертом разработки ПО, получите признание коллег, заработайте репутацию, создайте стартап или приложение которое будет работать на вас!

От автора: не так давно на нашем сайте был опубликован урок по созданию документов MS Word средствами языка PHP, и с использованием специальной библиотеки PHPWord. Но в комментариях к данному видео – прозвучал вопрос, как при помощи данной библиотеки читать готовые документы, что собственно и подтолкнуло меня к записи данного урока, в котором мы с Вами научимся, используя выше указанную библиотеку, читать ранее созданные документы MSWord.

скачать исходники
скачать урок

В данном уроке мы продолжаем изучать возможности PHPWord, а именно рассмотрим инструменты по чтению готовых документов MS Word. Хотел бы отметить, что сегодня мы будем работать с уже установленной библиотекой, потому как это уже второй урок по данной теме, а значит, на основах подробно останавливаться не будем. Поэтому рекомендую, перед просмотром данного видео ознакомиться с первой часть урока – PHPWord — создание MS Word документов средствами PHP.

Итак, заготовка, тестового скрипта состоит из одного единственного файла index.php, в коде которого выполнена установка библиотеки.


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

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

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

Итак, заготовка, тестового скрипта состоит из одного единственного файла index.php, в коде которого выполнена установка библиотеки.

Для начала создадим переменную, в которой будет храниться путь к документу MSWord, с которым мы будем работать.

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

Для чтения готовых документов в PHPWord предусмотрена группа классов, отвечающих за чтение документов различных форматов. А значит, первым делом создадим объект специального “класса-риддера“.

$ objReader = \ PhpOffice \ PhpWord \ IOFactory :: createReader ( 'Word2007' ) ;

Далее, используя данный объект – выполним чтение документа формата MS Word.

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

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

Поэтому, вызывая на исполнение метод getSections(), мы получаем доступ к секциям документа, при этом в качестве результата будет возвращен массив, а значит мы его можем обойти циклом foreach().


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

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

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

При этом в коде цикла, для каждой секции, получим массив входящих элементов, вызывая на исполнение метод getElements(). Так как возвращаемое значение – это массив, значит, используя выше указанный цикл, мы можем получить доступ к каждой его ячейке.

При этом в переменной $e на каждой итерации цикла, содержится объект одного из элементов массива секций. Казалось бы, мы сразу можем получить текстовые данные MS Word, но для начала нужно проверить, что содержится в переменной $e.

if ( get_class ( $ e ) === 'PhpOffice\PhpWord\Element\TextRun' ) < $ objReader = \ PhpOffice \ PhpWord \ IOFactory :: createReader ( 'Word2007' ) ; if ( get_class ( $ e ) === 'PhpOffice\PhpWord\Element\TextRun' ) <

Таким образом, для текущего документа, в переменную $text, попадает объект элемента Text, то есть элемент простейшего текст, для получения которого достаточно вызвать на исполнение метод getText(). Для получения информации о форматировании текущего элемента, необходимо обратиться к методу getFontStyle(), который вернет объект в закрытых свойствах которого содержится указанная информация. Соответственно для доступа к значениям этих свойств необходимо использовать специальные методы:

getSize() – размер шрифта;

getColor() – цвет текста;

getName() – имя шрифта.

Все содержимое документа, записывается в переменную $body, значение которой будет отображено на экране, используя шаблон. Пустые строки документа представляют собой объект элемента TextBreak, который можно обработать следующим образом:

else if ( get_class ( $ e ) === 'PhpOffice\PhpWord\Element\TextBreak' ) <

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

$ objReader = \ PhpOffice \ PhpWord \ IOFactory :: createReader ( 'Word2007' ) ; if ( get_class ( $ e ) === 'PhpOffice\PhpWord\Element\TextRun' ) < else if ( get_class ( $ e ) === 'PhpOffice\PhpWord\Element\TextBreak' ) < else if ( get_class ( $ e ) === 'PhpOffice\PhpWord\Element\Table' ) < if ( get_class ( $ celem ) === 'PhpOffice\PhpWord\Element\Text' ) < else if ( get_class ( $ celem ) === 'PhpOffice\PhpWord\Element\TextRun' ) <

Для получения строк, необходимо вызвать метод getRows(), при этом в качестве результата будет возвращен массив объектов с информацией по каждой строке (элемент Row). Используя foreach(), обходим данный массив и для каждой строки получаем ячейки, при помощи метода getCells(). При этом опять же возвращается массив, который все так же мы обходим циклом. А далее для каждой ячейки вызываем на исполнение метод getElements(), для получения ее элементов. И так далее по принципу описанным выше.

Далее, осталось только отобразить значение переменной $body, любым удобным для Вас способом.

На этом данный урок я буду завершать. Как Вы видите, PHPWord предоставляет достаточно мощные инструменты по работе с документами MS Word, но и в тоже время сложные в плане получения данных из объектов.

Всего Вам доброго и удачного кодирования.


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

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

Библиотека PHPWord, находящаяся уже почти год в стадии бета-тестирования 1) , предоставляет возможность создания сложных документов формата OOXML (*.docx). Рассмотрим основные возможности этой библиотеки. Для начала работы достаточно распаковать архив с библиотекой в каталог с создаваемым вами документом PHP и подгрузить основной класс библиотеки, расположенный в файле PHPWord.php:

Свойства документа и шрифт по-умолчанию

Создание документа начинается с объявления экземпляра класса PHPWord. Конструктор не требует передачи аргументов:

Далее следует задать название и размер шрифта по-умолчанию:

В рассматриваемой версии до применения указанных выше функций шрифтом по-умолчанию является Arial размером 20 пунктов. Теперь можно задать время создания документа, имя автора и так далее:

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

Создание разделов

Основным элементом документа Word является Раздел. Раздел представляет собой прямоугольную область, внутри которой помещаются остальные элементы страницы: текст, изображения, таблицы и т.д.

Раздел может иметь книжную или альбомную ориентацию, настраиваемые поля (margins), настраиваемые цвета границ раздела и их толщину (на рисунке показана пунктиром):

Параметр Описание
orientation Ориентация страницы:
null - книжная ориентация,
landscape - альбомная
marginTop Размер верхнего поля во внутренних единицах
marginRight Размер правого поля во внутренних единицах
marginBottom Размер нижнего поля во внутренних единицах
marginLeft Размер левого поля во внутренних единицах
borderTopSize Толщина верхнего края рамки во внутренних единицах
borderRightSize Толщина правого края рамки во внутренних единицах
borderBottomSize Толщина нижнего края рамки во внутренних единицах
borderLeftSize Толщина левого края рамки во внутренних единицах
borderTopColor Цвет верхнего края рамки в шестнадцатеричном формате
borderRightColor Цвет правого края рамки в шестнадцатеричном формате
borderBottomColor Цвет нижнего края рамки в шестнадцатеричном формате
borderLeftColor Цвет левого края рамки в шестнадцатеричном формате

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

Указанные в таблице параметры могут быть переданы в виде массива при создании раздела.

. или могут быть установлены по-отдельности после создания раздела:

Добавление текста

Добавление блока текста

Под блоком текста понимается отрывок текста, имеющий одинаковое форматирование (цвет, размер шрифта и т.п.). Для создания блока текста в выбранном разделе используйте функцию addText:

Здесь $text - добавляемый текст, необязательный параметр $fontStyle - имя определенного ранее текстового стиля, необязательный параметр $paragraphStyle - имя определенного ранее стиля абзаца.

Изменение форматирования текста

Форматирование текста, как и форматирование раздела, может осуществляться при его создании.

. или устанавливается после создания предназначенными для этого методами:

Ниже приведен полный список доступных параметров форматирования текста:

Параметр Описание
size Размер шрифта в типографских пунктах
name Название шрифта (кегль)
bold Является ли текст полужирным (true\false)
italic Выделен ли текст курсивом (true\false)
superScript Является ли текст надстрочным (true\false)
subScript Является ли текст подстрочным (true\false)
underline Вид подчеркивания 2) из набора констант PHPWord_Style_Font:
UNDERLINE_NONE - нет подчеркивания,
UNDERLINE_DASHHEAVY - жирная штриховая линия,
UNDERLINE_DASHLONG - удлиненная штриховая линия,
UNDERLINE_DASHLONGHEAVY - удлиненная жирная штриховая линия,
UNDERLINE_DOUBLE - двойная линия,
UNDERLINE_DOTHASH 3) - штрих-пунктир,
UNDERLINE_DOTHASHHEAVY - жирный штрих-пунктир,
UNDERLINE_DOTDOTDASH - две точки + тире,
UNDERLINE_DOTDOTDASHHEAVY - жирные две точки + тире,
UNDERLINE_DOTTED - пунктир,
UNDERLINE_DOTTEDHEAVY - жирный пунктир,
UNDERLINE_SINGLE - одинарная линия,
UNDERLINE_WAVY - волнистая линия,
UNDERLINE_WAVYDOUBLE - двойная волнистая линия,
UNDERLINE_WAVYHEAVY - тройная волнистая линия,
UNDERLINE_WORDS - подчеркивать только слова (не подчеркивать пробелы)
Color Цвет шрифта в шестнадцатеричном формате
fgColor Цвет выделения маркером из набора констант PHPWord_Style_Font:
FGCOLOR_YELLOW - желтый,
FGCOLOR_LIGHTGREEN - ярко-зеленый,
FGCOLOR_CYAN - бирюзовый,
FGCOLOR_MAGENTA - лиловый,
FGCOLOR_BLUE - синий,
FGCOLOR_RED - красный,
FGCOLOR_DARKBLUE - темно-синий,
FGCOLOR_DARKCYAN - сине-зеленый,
FGCOLOR_DARKGREEN - темно-зеленый,
FGCOLOR_DARKMAGENTA - фиолетовый,
FGCOLOR_DARKRED - темно-красный,
FGCOLOR_DARKYELLOW - коричнево-зеленый,
FGCOLOR_DARKGRAY - серый 50%,
FGCOLOR_LIGHTGRAY - серый 25%,
FGCOLOR_BLACK - черный

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

Cписок доступных параметров форматирования абзаца:

Параметр Описание
align Выравнивание текста в абзаце:
left - по левому краю,
right - по правому краю,
center - по центру,
both или justify - по ширине
spaceBefore Отступ абзаца сверху в твипсах
spaceAfter Отступ абзаца снизу в твипсах
spacing Интервал между строк в твипсах

Определение стилей текста и абзаца

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

Здесь $styleName - заданное вами имя стиля, $fontStyle - массив, содержащий определение стиля. После создания стиля его имя можно использовать при создании блоков текста, например:

Аналогичным образом осуществляется создание стиля абзаца:

Группировка блоков текста в абзац

Блоки текста с различным форматированием могут быть объединены в абзац заданного вида. Для этого применяется команда createTextRun:

Необязательный параметр $paragraphStyle - массив со стилем абзаца или название созданного ранее именованного стиля.

Добавление заголовков

В библиотеке имеются отдельные функции для добавления заголовков (addTitle) и задания их стилей (addTitleStyle). Применение заголовков вместо форматированных блоков текста необходимо в том случае, если вы хотите добавить в документ автоматически создаваемое оглавление, поскольку в оглавление включаются только заголовки, а не обычные блоки текста. При добавлении заголовков создание стилей заголовков обязательно:

Здесь $titleLevel - уровень заголовка, для которого задается стиль (обычно от 1 до 6), $fontStyle - массив со стилем форматирования заголовка, $paragraphStyle - массив со стилем форматирования абзаца. Как видите, форматирование можно не трогать, но сам стиль заголовка требуемого уровня должен быть обязательно создан. Добавление заголовка делается так:

По-умолчанию создается заголовок 1 уровня.

Добавление ссылок

Добавление ссылок мало чем отличается от добавления обычного текста. Для добавления ссылки используется команда:

Разрыв строки и страницы

Для принудительного переноса строки используйте синтаксис:

Необязательный параметр $num, по-умолчанию равный 1, указывает сколько переносов строки необходимо сделать. Для принудительной вставки разрыва страницы выполните:

Добавление оглавления

Для добавления оглавления используется функция addTOC:

Здесь $fontStyle - форматирование текста, определенное одним из ранее указанных способов, $tocStyle - массив со стилем оформления оглавления, возможные параметры которого приведены в таблице: ^ Параметр ^ Описание ^

tabLeader Заполнитель между заголовком и номером страницы из набора констант PHPWord_Style_TOC :
TABLEADER_DOT - точки,
TABLEADER_UNDERSCORE - символ подчеркивания,
TABLEADER_LINE - линия,
TABLEADER_NONE - нет заполнителя
tabPos Положение номера страницы в твипсах
Indent Отступ заголовков в твипсах

Добавление списков

Присутствует возможность добавления нумерованных и ненумерованных списков в документ. Для добавления элемента списка используйте код:

Здесь $text - текст добавляемого элемента списка, $depth - глубина вложенности элемента в списке (от 1 до 9, по-умолчанию равна 1), $textStyle - форматирование текста списка одним из предложенных ранее способов, $listStyle - форматирование самого списка при помощи массива параметров, $paragraphStyle - форматирование абзаца. На данный момент не существует функции addListStyle, поскольку у списков пока может изменяться только один параметр:

Параметр Описание
listType Вид списка из набора констант PHPWord_Style_ListItem:
TYPE_NUMBER - одноуровневый нумерованный список,
TYPE_NUMBER_NESTED - многоуровневый нумерованный список,
TYPE_BULLET_FILLED - ненумерованный список с маркерами в виде закрашенных кругов,
TYPE_BULLET_EMPTY - ненумерованный список с маркерами в виде незакрашенных кругов,
TYPE_SQUARE_FILLED - ненумерованный список с маркерами в виде закрашенных квадратов

Добавление таблиц

Важной частью документа Word являются таблицы. Для создания таблицы в PHPWord выполните:

Необязательный аргумент $tableStyle - массив с описанием стиля таблицы или название такового, определенного методом addTableStyle:

Аргументы: $styleName - название стиля, $tableStyle - массив с определением стиля, $firstRowStyle - массив с определением стиля ячеек 1 строки (шапки) таблицы. Ниже приведена таблица возможных стилевых параметров таблицы в целом: ^ Параметр ^ Описание ^

cellMarginTop Отступ от ячейки сверху в твипсах
cellMarginRight Отступ от ячейки справа в твипсах
cellMarginBottom Отступ от ячейки снизу в твипсах
cellMarginLeft Отступ от ячейки слева в твипсах

Теперь в созданную таблицу можно добавить ячейки. Как и в XHTML, вначале нужно создать строку.

. затем добавить ячейки и заполнить их форматированным текстом.

. или сделать то же самое одной командой.

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

Команда Действие
addText Добавить форматированный текст
addTextBreak Добавить перенос строки
addLink Добавить ссылку
addListItem Добавить элемент списка
addImage Добавить изображение из файла
addMemoryImage Добавить динамически сгенерированное изображение
addObject Добавить объект OLE
addPreserveText Добавить поле (например, нумерацию страниц)

Как вы уже, наверное, догадались, параметр $rowHeight - позволяет задать высоту в твипсах создаваемой строки, $cellWidth - ширину ячейки (столбца), а $cellStyle - изменить форматирование ячейки. При форматировании ячейки поддерживаются следующие параметры:

Параметр Описание
valign Выравнивание в ячейке по-вертикали: both - по-вертикали по ширине,
top - по верхнему краю,
bottom - по нижнему краю,
center - по-центру
textDirection Направление текста из набора констант PHPWord_Style_Cell:
TEXT_DIR_BTLR - развернут на 90 градусов против часовой стрелки,
TEXT_DIR_TBRL - развернут на 90 градусов по часовой стрелке
bgColor Цвет фона ячейки в шестнадцатеричном формате
borderTopSize Толщина верхней границы ячейки в твипсах
borderRightSize Толщина правой границы ячейки в твипсах
borderBottomSize Толщина нижней границы ячейки в твипсах
borderLeftSize Толщина левой границы ячейки в твипсах
borderTopColor Цвет верхней границы ячейки в шестнадцатеричном формате
borderRightColor Цвет правой границы ячейки в шестнадцатеричном формате
borderBottomColor Цвет нижней границы ячейки в шестнадцатеричном формате
borderLeftColor Цвет левой границы ячейки в шестнадцатеричном формате

Добавление изображений

PHPWord позволяет добавлять в создаваемый документ изображения 2 типов: из файла (метод addImage) и динамически сгенерированное сценарием изображение (метод addMemoryImage). Поддерживаются файлы форматов jpg, png, gif, tiff, bmp. Примеры применения методов:

Здесь $src и $url - соответственно путь к файлу и абсолютный путь к сценарию (с адресом сайта и промежуточных каталогов), $imageStyle - массив с форматированием изображения. Поддерживаемые параметры форматирования:

Параметр Описание
width Требуемая ширина изображения в пикселях
height Требуемая высота изображения в пикселях
align Горизонтальное выравнивание изображения:
left - по левому краю,
right - по правому краю,
center - по центру

Если требуемые размеры изображения не указаны - библиотека пытается определить фактические размеры изображения при помощи функции [php>getimagesize|getimagesize]].

Добавление объектов OLE

С помощью метода addObject вы можете внедрить в создаваемый документ фрагмент другого документа (*.docx, *.xlsx, *.pptx) при помощи технологии OLE:

Массив $objectStyle может содержать только один параметр:

Параметр Описание
align Выравнивание объекта по-горизонтали:
left - по левому краю,
right - по правому краю,
center - по центру

Колонтитулы

Каждый раздел документа может иметь свой верхний (header) и нижний (footer) колонтитул, отображаемый на всех принадлежащих ему страницах. С точки зрения Word колонтитул является особым видом раздела, поэтому к колонтитулу применимо большинство описанных выше методов: addText, createTextRun, addTextBreak, addImage, addMemoryImage, addListItem, addTable. Кроме этого колонтитул имеет собственный метод addPreserveText, позволяющий создавать нумерацию страниц. Пример создания верхнего (createHeader) и нижнего (createFooter) колонтитула:

Как и всегда форматирование текста колонтитула и абзаца являются необязательными параметрами.

Использование шаблонов

Библиотека PHPWord поддерживает еще один интересный метод создания документов Word - использование шаблонов. Подробный принцип работы при генерировании документов из шаблонов описан в статье docx-templates. В качестве метки в PHPWord используется комбинация $ , где NAME - имя метки. Пример генерирования с использованием меток:

Сохранение файла

Сохранение файла на жесткий диск:

Пример

Подытоживая все вышесказанное хочется привести пример, в котором проиллюстрировано применение большинства возможностей библиотеки PHPWord:

Текст примера появится несколько позже, когда автор сможет сгенерировать документ с кириллицей (на английском работает). Проблема связана с функцией utf8_encode, используемой в PHPWord. Если у вас есть решение этой проблемы, просьба отписаться. Update! Проблема с функцией utf8_encode и кириллической кодировкой решается если заменить функцию на iconv и указать входящую кодировку CP1251 и выходе UTF8. Сделать это надо во всех местах библиотеки где используется функция utf8_encode.

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

Я установил и установил PHP Word на PHPStorm (IDE). Я пытаюсь прочитать строку " учиться со вчерашнего дня, жить на сегодня, надеяться на завтра. " из документа Word под названием "helloWorld.docx", используя PHPWord.

enter image description here

Это мой код для загрузки и чтения документа:

Полный вывод слишком длинный для публикации, но вы можете увидеть строку, которую я ищу в этом фрагменте, если вы прокрутите список вниз

мой основной вопрос: " Есть ли способ найти эту строку без использования var_dump и поиска через массивный вывод? "

Текстовая информация находится в свойствах [text] , которые, в свою очередь, вложены в свойства [elements] . Просто найдите их в объекте, который вы получаете в своем браузере, используя функцию "найти что-то в тексте" вашего браузера, чтобы увидеть текст, который вы ищете.

Эти два свойства защищены, поэтому вам нужно будет сделать их общедоступными, чтобы получить/извлечь их.

После того, как вы сделаете их public , вы можете начать отсекать каждый слой полученного вами объекта и тем самым получить доступ к объекту, где свойства [elements]->[text] - это всего лишь один слой вниз по "дереву".

Таким образом, алгоритм состоит в том, чтобы: 1) найти эти [text] свойства, 2) увидеть путь к объекту, содержащему эти свойства, 3) отрезать уровни и уровни более высокого уровня по уровню, 4) получить объект, где [elements]->[text] свойства - это только 2-й уровень, 5) собрать все значения свойств [text] в, скажем, в массиве.

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

Кроме того, вы можете внести определенные изменения в файлы библиотеки PHPWord и не получить ненужные свойства и значения в результирующем объекте, который вы получаете при загрузке файла Word в PHPWord (стили, информация о параграфе и т.д.).

В PHPSpreadsheet они реализовали метод получения только фактических данных из файлов Excel (лишенных форматирования, информации стилей и т.д.). С другой стороны, PHPWord также объявлял свойство $readDataOnly , но они просто остановились и по какой-то причине не реализовали механизм для чтения фактических текстовых данных.

Читайте также: