Генериране на документи на Microsoft Word в PHP

Ние живеем в един свят, където PHP разработчиците трябва от време на време, за да си взаимодействат с операционната система Windows. WMI (Интерфейс на Windows за управление, Интерфейс за управление на Windows) - един такъв пример - взаимодействието с Microsoft Office.

В тази книга, ние считаме проста интеграция между Word и PHP: генериране на документ на Microsoft Word, въз основа на полетата за въвеждане в HTML форма с помощта на PHP (и нейното разширяване Interop).

подготвителни стъпки

Първо, уверете се, че сме създали основен WAMP среда. От Interop присъства само на Windows, тогава ние трябва да направим нашата Apache сървър и PHP инсталация е разположена на една машина на Windows. Като такъв, аз използвам EasyPHP 14.1. което е изключително лесна за инсталиране и конфигуриране.

Също така не забравяйте, че ние сме създали библиотеки за разработване на приложения Interop (PIA, Основно Interop сглобки, основната съвместяването Interop). Научете го, като отворите Windows Explorer и навигация, за да \ Събрание. и там трябва да видите набор от фиксирани възли:

Генериране на документи на Microsoft Word в PHP

Тук можете да видите Microsoft.Office.Interop.Word елемент (подчертано в снимката). Тя ще бъде събранието, което ще използваме в нашата демонстрация. Моля, обърнете специално внимание на полето "име събрание (име събрание)", "Версия (версия)" и "Публичен ключ токен (знак публичен ключ)." Тях ние скоро ще се използва в нашия PHP скрипт.

Тази директория съдържа и други възли (включително всички Office семейство) са достъпни за използване в своите програми (не само PHP, но и за VB.net, C # и др.)

Ако поименния списък не включва цял пакет Microsoft.Office.Interop. ние трябва или да преинсталирате Office, добавяне на PIA, или ръчно да изтеглите пакета от сайта на Microsoft и да го инсталирате. За по-подробни инструкции вижте тази страница в MSDN.

И накрая, трябва да се даде възможност на php_com_dotnet.dll разширение в php.ini и да рестартирате сървъра.

Сега можете да отидете на програмиране.

HTML форма

Тъй като основната част от този пример се пада на сървъра страна, ние ще създадем една проста страница с форма, която ще бъде, както следва:

Генериране на документи на Microsoft Word в PHP

В момента има текстово поле за името на група от ключове за пода, плъзгача за възрастта и влизане текстовото поле, за да въведете съобщение, и прословутия бутона "Изпращане".

Частта сървър

File-манипулатор на сървъра страна - това е основната цел на нашия разговор. За да започнете, ще дам пълния код на този файл, и след това да се обясни това стъпка по стъпка.

След като записва в променлива входовете $ стойностите, получени от матрицата, а също така създават празен елемент с printdate ключ (защо го е направил - ще обсъдим по-късно), ние се обръщаме към четирите много важни редове:

Манипулатор COM в PHP изисква създаването на пример на клас в "сглобяването". В нашия случай, ние работим с Word. Ако се вгледате в първия скрийншот, ние можем да напишете пълния подписа на събранието за Словото:

Класът, към който искаме да се отнасят до, винаги се нарича "imya.sborki" + ".ApplicationClass".

Чрез задаване на тези два параметъра, ние ще бъдем в състояние да получи един обект за работа с Word.

Този обект може да остане на заден план, или можем да го превърне в оперативен режим на настройка видим атрибут да е вярно.

Следващата стъпка е да отворите документа, което изисква лечение, и пишат копие на "документ" в променливата $ г.

За да създадете съдържание документ, въз основа на данните от формата, можете да отидете няколко начина.

Така че би било погрешно да се твърди код за съдържанието на документа в PHP, и след това ще го покаже в документ на Word. Горещо препоръчвам да не го прави по следните причини:

  1. Губите гъвкавост. Всички промени в изходния файл ще изисква промяна в кода на PHP.
  2. Това нарушава разделението на контрол и вид
  3. Прилагането на стилове за съдържанието на документа (привеждане в съответствие, шрифтове, стилове и т.н.) в скрипта значително ще се увеличи броят на реда код. Софтуер стилове промени твърде тромава.

Друг вариант е да се използва търсене и замяна. PHP е с добра вградени инструменти за това. Ние можем да създадете документ на Word, която ще постави на етикета със специални разделители, които са били по-късно да бъдат заменени. Например, можем да създадем един документ, който ще съдържа следния фрагмент:

и с помощта на PHP, ние можем лесно да го замени с съдържанието на полетата "Име", получени от формата.

Това е лесно, и ни спасява от всички неприятни последици, с които ни изправят в първия метод. Ние просто трябва да се определи точната разделител, и в този случай бяхме подготвени с помощта на шаблон.

Аз препоръчвам на третия път, и тя се основава на по-дълбоко познаване на Словото. Като пълнители, ние ще използваме тази област, и с помощта на PHP код ще актуализира стойностите директно в областта, съответните стойности.

Този подход е гъвкав, бърз и в съответствие с най-добрите практики за работа с Word. С него можете да се избегне търсенето на пълен текст в документа, което е добре за изпълнение. Имайте предвид, че това решение има и недостатъци.

Word от самото начало поддържа имената на индекса за полетата. Дори и да е конкретизирал имената на полета, генерирани - ние все още трябва да използвате числовите идентификатори на тези области. Това обяснява и защо ние трябва да се използва отделна функция (setupfields) с цел да се определят съответните полета на индекса, както и името на полето от формуляра.

В тази демонстрация урок ще използваме документа с 5 полета MERGEFIELD. образци на документи, ще бъдат разположени на същото място и нашия скрипт манипулатор.

Моля, имайте предвид, че printdate поле не разполага съответните полета. Ето защо ние добавя празен printdate елемент в масива от $ входове. Без него сценария все още ще бъде създаден и работи, но PHP ще издаде предупреждение, че printdate не индекс на входовете масив $.

След смяна на полетата с нови стойности, ние ще отпечата документа, като се използва

Разпечатка метод отнема няколко незадължителни параметри, и ние използваме най-проста форма на него. Така че това ще се отпечата едно копие от документа за принтера по подразбиране, който е свързан с Windows компютър.

Можете също така да се обадите на Изглед за печат. да погледнете резултата, получен преди неговото отпечатване. В напълно автоматизирана среда, ние, разбира се, ще използваме метода на разпечатката.

Необходимо е да се изчака известно време, преди пълното работа с Word, така че отделете време, за да въведе задание за печат. Без забавяне (3) метод за $ w-> Quit се извършва веднага, а работата не е в опашката.

И накрая, ние наричаме $ w-> Quit (фалшиво). която затваря приложението Word, която е била причинена от нашия скрипт. Единственият параметър премина на метода е инструктиран да запишете файла, преди да излезе. Направихме промени в документа, но ние не искаме да ги спаси, защото имаме нужда от чист шаблон за последващо работа.

След като приключите с кода, ние може да се зареди нашата уеб страница с форма, за да вкара някои стойности, и да го изпратите. Следващите снимки показват резултатите от сценария и актуализираната Словото документа:

Генериране на документи на Microsoft Word в PHP

Генериране на документи на Microsoft Word в PHP

PHP - слабо типов език. COM обект от тип Object. Докато пишех сценария, че не сме в състояние да получи описание на обекта, независимо дали това е приложението Word, документ или област. Ние не знаем кои свойства имат тази възможност, или какви методи го поддържа.

Това до голяма степен се забави скоростта на развитие. За да се ускори развитието, бих препоръчал първо да пишат функции в C # и след това превежда кода в PHP. Мога да препоръчам един свободен IDE за разработване на C #, наречена "#develop". Можете да го намерите тук. Аз предпочитам своето Visual Studio, тъй #develop по-малки, по-лесно и по-бързо.

C # миграция код в PHP не е толкова страшно, колкото изглежда. Нека ви покажа няколко реда в C #:

Може да забележите, че кодът в C # е много подобен на PHP код, който ви показах по-рано. C # - силно типов език, така че можете да видите няколко вида оператори гласове в този пример, както и необходимостта да се определи видът на променливата.

С посочването на дадена променлива, можете да се насладите на по-ясни и автоматично довършване на код и скоростта на развитие значително подобрено.

Друг начин да се увеличи скоростта на развитие на PHP - обадете се на макроса в Word. Ние извършваме същата процедура, и след като го задържа като макрос. Макро написан на Visual Basic, която също е лесно да се преведат в PHP.

И най-важното - документацията на Office PIA от Microsoft. особено документиране на пространства от имена за всяко приложение Office е най-подробната справка материал. Най-често използваните три приложения:

заключение

В тази статия, ние показахме как да се пренесат на документ на Word, използвайки PHP COM библиотеки и възможности на Microsoft Office за оперативна съвместимост.

Windows и Office са широко използвани в ежедневието. Знайте, Офис / Window сила и PHP ще е от полза на всеки PHP, и Windows разработчици.

С разрастването на PHP COM ти отвори вратата за използването на тази комбинация.

Генериране на документи на Microsoft Word в PHP

До получаване на информация от два канала (зрение и слух) на ефективността на обучението далеч по-добър живот от книги. А домашните задачи и онлайн тестове ще ви позволи да мисля постоянно в целевия език и веднага провери знанията си!

Генериране на документи на Microsoft Word в PHP

Генериране на документи на Microsoft Word в PHP

Ако искате по-дълго време, за да проучи как да се HTML, че ме има, за което трябва добра новина!

Генериране на документи на Microsoft Word в PHP

Ако вече сте се научили HTML и искат да се движи напред, следващата стъпка ще бъде да се проучи CSS технологията.

Генериране на документи на Microsoft Word в PHP

Ако искате да се разбере концепцията на домейн и хостинг, да научат как да се създаде база данни, да качвате файлове към уеб сайт чрез FTP сървър, създаване на поддомейни, да конфигурирате пощенските кутии за сайта и мониторинг на посещаемостта, този курс е разработен специално за вас!