<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Developer Blog &#187; php</title>
	<atom:link href="http://451f.com.ua/tag/php/feed" rel="self" type="application/rss+xml" />
	<link>http://451f.com.ua</link>
	<description>developer blog - 451 degrees Fahrenheit</description>
	<lastBuildDate>Sun, 04 Jul 2010 21:22:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Используем Namespaces в Propel 1.5</title>
		<link>http://451f.com.ua/propel-namespaces-php/324</link>
		<comments>http://451f.com.ua/propel-namespaces-php/324#comments</comments>
		<pubDate>Tue, 15 Jun 2010 13:03:16 +0000</pubDate>
		<dc:creator>pilot</dc:creator>
				<category><![CDATA[Symfony]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[propel]]></category>

		<guid isPermaLink="false">http://451f.com.ua/?p=324</guid>
		<description><![CDATA[Propel 1.5 не перестает радовать темпами развития и внедрением нового функционала, буквально несколько недель назад Francois Zaninotto (лидер  проекта Propel) опубликовал новую возможность по редактированию вложенных форм с использованием mergeRelation и embedRelation и на днях возможность использовать Namespaces при генерации моделей. Propel 1.5 позволяет использовать Namespaces в файлах описывающих вашу модель если вы используете в [...]]]></description>
			<content:encoded><![CDATA[<p>Propel 1.5 не перестает радовать темпами развития и внедрением нового функционала, буквально несколько недель назад <a href="http://posterous.com/people/KQvOiGXGut">Francois Zaninotto</a> (лидер  проекта Propel) опубликовал новую возможность по редактированию <a href="http://tigor.com.ua/blog/2010/06/02/sfpropel15plugin-embed-relation-forms-in-one-line/">вложенных форм с использованием mergeRelation и embedRelation</a> и на днях возможность использовать <a href="http://php.net/manual/en/language.namespaces.php">Namespaces</a> при генерации моделей.</p>
<p>Propel 1.5 позволяет использовать Namespaces в файлах описывающих вашу модель если вы используете в работе php версии 5.3</p>
<p>Добавить использование моделей очень просто:<br />
<code lang="xml"> &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;<br />
&lt;database name="bookstore" namespace="Bookstore" defaultIdMethod="native"&gt;<br />
&lt;table name="book"&gt;<br />
&lt;!-- --&gt;<br />
&lt;/table&gt;<br />
&lt;table name="author"&gt;<br />
&lt;!-- --&gt;<br />
&lt;/table&gt;<br />
&lt;/database&gt;</code><br />
А в классе модели:<br />
<code lang="php"> &lt;?php<br />
// use fully qualified name<br />
$book = new \Bookstore\Book();<br />
// or use an alias<br />
use Bookstore\Book;<br />
$book = new Book();<br />
// remember to use the \ namespace for core Propel classes in this case<br />
$con = \Propel::getConnection();<br />
$book-&gt;save($con);</code><br />
Более подробнее можно прочесть в блоге <a href="http://propel.posterous.com/propel-php-53-and-namespaces-they-love-each-o">Francois Zaninotto</a></p>
]]></content:encoded>
			<wfw:commentRss>http://451f.com.ua/propel-namespaces-php/324/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Html DOM parser на PHP</title>
		<link>http://451f.com.ua/php-simple-html-dom-parser-jquery-style/256</link>
		<comments>http://451f.com.ua/php-simple-html-dom-parser-jquery-style/256#comments</comments>
		<pubDate>Mon, 11 Aug 2008 15:36:19 +0000</pubDate>
		<dc:creator>pilot</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[parser]]></category>

		<guid isPermaLink="false">http://451f.com.ua/2008/08/11/php-simple-html-dom-parser-jquery-style/</guid>
		<description><![CDATA[Очень полезный класс для разборки DOM модели веб документа с селектора в&#160; jQuery стиле. Это просто незаменимая вещь если вы любитель обдирать чужие сайты )). А вообще одно из основных применений &#8211; это к примеру брать котировки валют прям со страницы банка и тд. Почему собственно PHP Simple HTML DOM Parser: Написан на PHP5+ и [...]]]></description>
			<content:encoded><![CDATA[<p>Очень полезный <a href="http://simplehtmldom.sourceforge.net/" target="_blank">класс</a> для разборки DOM модели веб документа с селектора в&nbsp; <a href="http://jquery.com/" target="_blank">jQuery</a> стиле.</p>
<blockquote><p><font style="background-color: #ffffff" face="Lucida Sans Unicode">Это просто незаменимая вещь если вы любитель обдирать чужие сайты )). А вообще одно из основных применений &#8211; это к примеру брать котировки валют прям со страницы банка и тд.</font></p>
</blockquote>
<p>Почему собственно <a href="http://simplehtmldom.sourceforge.net/" target="_blank">PHP Simple HTML DOM Parser</a>:</p>
<ul>
<li>Написан на PHP5+ и позволяет легко управлять HTML
<li>Поддерживает не валидный HTML
<li>Поиск тагов в HTML с селекторами в jQuery стиле
<li>Может разложить все содержимое HTML в строку</li>
</ul>
<p>Скачать последнюю версию с <a href="http://sourceforge.net/project/showfiles.php?group_id=218559" target="_blank">Sourceforge</a>.</p>
<p>Онлайн <a href="http://simplehtmldom.sourceforge.net/manual.htm" target="_blank">документация</a>.</p>
<p>Небольшой пример, как извлеть HTML элемент:</p>
<pre>

// Create DOM from URL or file$html = file_get_html('http://www.google.com/');


// Find all images
foreach($html-&gt;find('img') as $element)
  echo $element-&gt;src . '&lt;br&gt;'; 

// Find all links
foreach($html-&gt;find('a') as $element)
  echo $element-&gt;href . '&lt;br&gt;';
</pre>
]]></content:encoded>
			<wfw:commentRss>http://451f.com.ua/php-simple-html-dom-parser-jquery-style/256/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Вот он долгожданный релиз symfony 1.1</title>
		<link>http://451f.com.ua/the-wait-is-over-symfony-1-1-released/90</link>
		<comments>http://451f.com.ua/the-wait-is-over-symfony-1-1-released/90#comments</comments>
		<pubDate>Mon, 30 Jun 2008 13:02:17 +0000</pubDate>
		<dc:creator>pilot</dc:creator>
				<category><![CDATA[Symfony]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://451f.com.ua/2008/06/30/the-wait-is-over-symfony-1-1-released/</guid>
		<description><![CDATA[Последнее время разработчики усиленно трудились на новой версией symfony и сегодня этот день настал, можно поздравить разработчиков с выходом нового релиза symfony framework! &#160; Итак список нового функционала в symfony 1.1: Новая архитектура symfony более настраиваяемая и разделенная, позволяет легко использовать или заменять части фреймворка, Новая объекто-ориентированный form framework, позволяет налету создавать формы и повторо [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://451f.com.ua/img/2008/06/release11.png"><img style="border-right: 0px; border-top: 0px; margin: 0px 15px 0px 0px; border-left: 0px; border-bottom: 0px" height="87" alt="release1.1" src="http://451f.com.ua/img/2008/06/release11-thumb.png" width="217" align="left" border="0"></a> Последнее время разработчики усиленно трудились на новой версией symfony и сегодня этот день настал, можно поздравить разработчиков с выходом нового релиза symfony framework!
<p>&nbsp;
<p>Итак список нового функционала в symfony 1.1:
<ul>
<li><a href="http://451f.com.ua/2008/06/24/the-symfony-1-1-architecture/">Новая архитектура symfony</a> более настраиваяемая и разделенная, позволяет легко использовать или заменять части фреймворка,
<li>Новая объекто-ориентированный <a href="http://www.symfony-project.org/book/forms/1_1/">form framework</a>, позволяет налету создавать формы и повторо их использовать,
<li>Совершенно <a href="http://www.symfony-project.org/cookbook/1_1/en/tasks" target="_blank">новая система задач</a> (task system) позволяет быстро создавать рассширяемые батч скрипты и утилиты командной строки,
<li>Теперь Symfony имеет приличный <a href="http://www.symfony-project.org/blog/2008/06/19/yaml-in-symfony-1-1">YAML parser</a>, с подробными сообщениями об ошибках,
<li>Новый менеджер плагинов совместим со стандартом PEAR API, отображает зависимости плагинов, и предлагает набор опций для лучшего управления тем что вы установили,
<li><a href="http://451f.com.ua/2008/06/11/how-to-create-an-optimized-version-of-your-website-for-the-iphone-in-symfony-1-1/" target="_blank">Система обработки форматов</a> позволяет вашему приложению вести себя по разному в зависимости от запроса с iPhone, от поисквого бота, или от браузера,
<li>Propel 1.2 ORM теперь представлен в виде <a href="http://trac.symfony-project.com/browser/branches/1.1/lib/plugins/sfPropelPlugin">плагина</a>, что позволяет вам очень просто перейти на <a href="http://www.symfony-project.org/cookbook/1_1/en/doctrine">Doctrine</a> или <a href="http://www.symfony-project.org/cookbook/1_1/en/propel_13">Propel 1.3</a>,
<li><a href="http://trac.symfony-project.com/browser/branches/1.1/lib/plugins/sfCompat10Plugin">Плагин sfCompat10Plugin</a> обеспечит работу вашего проекта основанного на версии 1.0 после обновления до версии 1.1!
<li>Система роутинга теперь кешируется, что приведет к значительному увеличению производительности если в вашем приложении разветвеленный роутинг. Так же, класс роутинга (routing class) больше не синглтон (singleton), так что теперь можно легко расширять его под свои нужды,
<li>Последнее, не совсем фича, более чем 8,500 юнит и функционал тестов гарантируют общую ставильность кода фреймворка. Количество тестов удвоилось в 1.1 по сравнению с 1.0! </li>
</ul>
<h4>Инсталяция и обновление symfony</h4>
<p>Для инсталяции symfony 1.1 через PEAR, теперь нужно явно указывать какую версию вы хотите установить. И так, если вы хотите установить стабильную 1.1.0 версию, выполняем:
<pre>$ pear install symfony/symfony-1.1.0
</pre>
<p>В случае если вы хотите стабильную 1.0 версию:
<pre>$ pear install symfony/symfony-1.0.17
</pre>
<p>Если вы предпочитаете скачивать самостоятельные архивы, качайте архив <a href="http://www.symfony-project.org/get/symfony-1.1.0.tgz">symfony-1.1.0.tgz</a> или <a href="http://www.symfony-project.org/get/symfony-1.1.0.zip">symfony-1.1.0.zip</a> и распакуйте в любую папку на вашем диске. </p>
<p>Если вы новичек в symfony, для вас доступна урощенная версия &#8220;песочница&#8221; (sandbox) : </p>
<ul>
<li><a href="http://www.symfony-project.org/get/sf_sandbox_1_1.tgz">sf_sandbox_1_1.tgz</a>
<li><a href="http://www.symfony-project.org/get/sf_sandbox_1_1.zip">sf_sandbox_1_1.zip</a></li>
</ul>
<p>Ну и если ты совсем крут и у тебя есть доступ к SVN, просто выполни чекаут ветки 1.1:
<pre>$ svn co http://svn.symfony-project.com/branches/1.1/ /path/to/symfony
</pre>
<p>Все остальное хорошо и в деталях расписано в <a href="http://www.symfony-project.org/installation/1_1">инструкции по установке symfony</a>. </p>
<h4>Обновление существующего проекта </h4>
<p>Если вы планируете обновить существующий на symfony 1.0 проект для использования новой версии 1.1, внимательно прочтите <a href="http://trac.symfony-project.com/browser/branches/1.1/UPGRADE">UPGRADE</a> файл, который есть в каждом дистрибутиве symfony. Если же вы сейчас используете symfony RC2, убедитесь что вы выполняли команду <tt>symfony project:upgrade,</tt>перед тем как обновите библиотеки symfony. </p>
<h4>Относительно документации</h4>
<p><a href="http://www.symfony-project.org/doc/1_1/">Вся документациия</a> обновлена и отображает изменения между symfony 1.0 и новой версией. Комьюнити оправдало наши ожидания и способствовало переводу документации на 10 новых языков менее чем за 15 дней!</p>
<p>В <a href="http://www.symfony-project.org/cookbook/1_1/en/">cookbook</a> добавили несколько полезных примеров и опубликовали первые 4 главы <a href="http://451f.com.ua/2008/06/18/the-symfony-forms-in-action-book-is-online/" target="_blank">книги о новом фреймворке для работы с формами</a>. <a href="http://www.symfony-project.org/api/1_1/">API документация</a> так же поможет вам легко найти все что вам нужно по всему коду symfony. </p>
<h4>Поддержка</h4>
<p>Symfony 1.1, как переходной релиз, будет поддерживаться в течении одного года начиная с 30.06.2008, тогда как 1.0 все еще будет поодерживаться до Января 2010. </p>
<h4>Следующий релиз </h4>
<p>Фабьен и основная команда уже начали работу над новым функционалом версии 1.2, которая будет выходить по датам, а не по новому функионалу. Таже, цикл релизов будет радикально уменьшен (похоже, что разаботчкик будут использовать agile &#8211; scrum методологию). Можно ожидать инетесных фич и улучшений в новом релизе, начиная с совершенно нового генератора админ интерфейса основанного на новой системе работы с формами представленной в symfony 1.1.</p>
]]></content:encoded>
			<wfw:commentRss>http://451f.com.ua/the-wait-is-over-symfony-1-1-released/90/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вакансия web программист</title>
		<link>http://451f.com.ua/job_php_developer/35</link>
		<comments>http://451f.com.ua/job_php_developer/35#comments</comments>
		<pubDate>Thu, 24 Apr 2008 17:49:00 +0000</pubDate>
		<dc:creator>pilot</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Работа]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php developer]]></category>
		<category><![CDATA[Symfony]]></category>

		<guid isPermaLink="false">http://451f.com.ua/2008/04/24/%d0%b2%d0%b0%d0%ba%d0%b0%d0%bd%d1%81%d0%b8%d1%8f-web-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82/</guid>
		<description><![CDATA[Немецко-Украинской компании Soft Alliance GmbH &#38; Co. KG Зарплата: От 1000 у.е и выше. В зависимости от опыта работы и квалификации. Занятость и расположение: Полный рабочий день Основное место работы Станция метро пр. Гагарина (г. Харьков) Опыт работы и образование: Образование высшее/неоконченное высшее (студент 4-5 курсов) Опыт работы от 1 года. Требования к кандидатам: PHP5 [...]]]></description>
			<content:encoded><![CDATA[<p>Немецко-Украинской компании <a href="http://soft-alliance.de">Soft Alliance GmbH &amp; Co. KG</a></p>
<p><strong>Зарплата:<br />
</strong> От 1000 у.е и выше. В зависимости от опыта работы и квалификации.</p>
<p><strong>Занятость и расположение:<br />
</strong> Полный рабочий день<br />
Основное место работы<br />
Станция метро пр. Гагарина (г. Харьков)</p>
<p><strong>Опыт работы и образование:<br />
</strong> Образование высшее/неоконченное высшее (студент 4-5 курсов)<br />
Опыт работы от 1 года.</p>
<p><strong>Требования к кандидатам:<br />
</strong> PHP5<br />
JavaScript<br />
MySQL</p>
<p><strong>Работа у нас это:<br />
</strong> Превосходная возможность практики профессиональных навыков<br />
Возможности профессионального и материального роста<br />
Дружный и веселый коллектив</p>
<p>Нам нужны люди, которые любят и умеют работать, хотят расти и осваивать новые технологии, инициативные и дисциплинированные, способные быстро обучаться и приносить пользу себе и делу.</p>
<p>Записаться к нам на собеседование можно:<br />
Позвонив нам +380 (66) 11-88-298 Александр</p>
<p>Или написать на pilot [at] pesochin [dot] net</p>
<p>we love symfony-project.com</p>
]]></content:encoded>
			<wfw:commentRss>http://451f.com.ua/job_php_developer/35/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Рисуем свой pdf файл на php, часть 2</title>
		<link>http://451f.com.ua/create-pdf-file-on-php-part2/6</link>
		<comments>http://451f.com.ua/create-pdf-file-on-php-part2/6#comments</comments>
		<pubDate>Sat, 27 Oct 2007 23:20:23 +0000</pubDate>
		<dc:creator>pilot</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[fpdf]]></category>
		<category><![CDATA[print pdf]]></category>

		<guid isPermaLink="false">http://451f.com.ua/2007/10/28/%d1%80%d0%b8%d1%81%d1%83%d0%b5%d0%bc-%d1%81%d0%b2%d0%be%d0%b9-pdf-%d1%84%d0%b0%d0%b9%d0%bb-%d0%bd%d0%b0-php-%d1%87%d0%b0%d1%81%d1%82%d1%8c-2/</guid>
		<description><![CDATA[В первой части я расказал, с чего все началось, и что было выбрано как инструмент для решения задачи. Итак бибилиотеке fpdf 1.5.3 , скачиваем, распаковываем к себе на сервер в любую папку, к примеру pdf, после распаковки получаем следующую структуру папок: У себя я использую пакет denver от dklab.ru, либо XAMPP http://www.apachefriends.org/en/xampp.html, который включает полный [...]]]></description>
			<content:encoded><![CDATA[<p>В первой части я расказал, с чего все началось, и что было выбрано как инструмент для решения задачи.</p>
<p>Итак бибилиотеке <strong>fpdf 1.5.3</strong> , скачиваем, распаковываем к себе на сервер в любую папку, к примеру <strong>pdf</strong>, после<strong> </strong>распаковки получаем следующую структуру папок:</p>
<blockquote><p>У себя я использую пакет denver от dklab.ru, либо XAMPP <a href="http://www.apachefriends.org/en/xampp.html">http://www.apachefriends.org/en/xampp.html</a>, который включает полный пакет программ необходимых веб разработчику. К тому же XAMPP подойдет как тем кто любит Linux, так и Windwos разработчикам.</p></blockquote>
<p><font color="#008000"><strong>pdf/</strong><br />
-doc/<br />
<strong>-font/</strong><br />
-tutorial/<br />
-FAQ.htm<br />
-fpdf.css<br />
<strong>-fpdf.php</strong><br />
-histo.htm<br />
-install.txt</font></p>
<p>Оставляем только необходимое папку <strong>font/</strong> и <strong>fpdf.php. </strong>Конечно, у кого есть немного времени чтоб ознакомиться с примерами из папки <strong>tutorial/, </strong>вы не пожалеете, примеры показывают практически исчерпывающую информацию по работе с fpdf.</p>
<p>Для начала создамим первый простой pdf файл, создайте pdf/test.php, с кодом:</p>
<p>[cc lang="php"]<br />
require(&#8216;fpdf.php&#8217;);</p>
<p>$pdf = new FPDF();<br />
$pdf->AddPage();<br />
$pdf->SetFont(&#8216;Arial&#8217;,'B&#8217;,16);<br />
$pdf->Cell(40,10,&#8217;Hello World!&#8217;);<br />
$pdf->Output();<br />
[/cc]</p>
<p>Первой строчкой мы подключаем библиотеку, далее:</p>
<p>[cc lang="php"]$pdf = new FPDF(); // Создаем новый объект[/cc]</p>
<p>Изначально наш pdf файл пуст, по-этому добавляем в наш pdf, новый лист:</p>
<p>[cc lang="php"]$pdf->AddPage(); // по умолчанию создется лист формата А4[/cc]</p>
<p>Перед выводом любого текста, предварительно нужно задать шрифт, в противном случае при создание будет сообщено об ошибке:<br />
[cc lang="php"]$pdf->SetFont(&#8216;Arial&#8217;,'B&#8217;,16);[/cc]</p>
<p>И вот теперь мы может напечатать свой первый текст в первом pdf файле, с помощью функции <a href="http://fpdf.org/en/doc/cell.htm">Сell()</a>, эта функция нарисует прямоугольную область с надписью внутри. Фактически будет выведена ячейка таблицы с текстом внутри.</p>
<p>[cc lang="php"]Cell(40,10,&#8217;Hello World!&#8217;);[/cc]</p>
<p>Для вывода просто текста используюется функция <a href="http://fpdf.org/en/doc/write.htm">Write()</a>, а для перевода на новую строку отдельная функция <a href="http://fpdf.org/en/doc/ln.htm">Ln()</a>:</p>
<p>[cc lang="php"]<br />
$pdf->Ln(); // перевод картеки на новую строку<br />
$pdf->Write(4, &#8220;текс для вывода&#8221;); // значение 4 означение высоту строки<br />
[/cc]</p>
<p>Выводим сам pdf, с помощью функции <a href="http://fpdf.org/en/doc/output.htm">Output()</a>, которая может принимать несколько значний, <a href="http://fpdf.org/en/doc/output.htm">Output(&#8220;пусть/имя.pdf&#8221;, dest)</a> имя выводимого файла, и второй необязательный параметр как будет выводиться файл, сразу в броузер либо сохранен на диск:</p>
<p>[cc lang="php"]$pdf->Output();[/cc]</p>
<p>Вот и создан первый pdf файл, на практиче простые текстовые файлы создаются довольно просто и библиотека работает безупречно.</p>
<p>И так вывод тикетов в pdf файл, ниже я буду давать php код с минимумом текстовых коментариев, так как основные принципы создания pdf файла я описал выше&#8230;</p>
<p><span id="more-6"></span></p>
<p>На входе у меня инфомация из базы данных, приведу только пример массива полученного после выборки части текста, который будет печататься на тикетах:</p>
<p>[cc lang="php"]<br />
// Входящий массив &#8211; список идентификаторов отелей<br />
$idhostel(&#8217;12&#8242;,&#8217;14&#8242;,&#8217;43&#8242;,&#8217;45&#8242;,&#8217;54&#8242;,&#8217;67&#8242;);</p>
<p>$pdf = new PDF();  // Создаем новый объект</p>
<p>$pages = ceil(count($idhostel)/27); // 27 тикетов на стрнице, считаем количество страниц</p>
<p>for ($p = 1; $p < ($pages+1); $p++){<br />
if (count($idhostel) > 27) $to = 27; else $to = count($idhostel);<br />
for ($i = 0; $i < $to; $i++){</p>
<p>// array_shift() - удаляем из массива $idhostel обработанный id<br />
$sql = "SELECT name, street, zip, city, country FROM fe_hostels WHERE idhostel='".array_shift($idhostel)."'";<br />
$result = DB::getRow($sql); // getRow() из класса работы с базой, у каждого свой.<br />
$hostel[] = $result;<br />
}</p>
<p>// Информация для отладки, попробуйте с ней.<br />
//echo "page: ".$p.""; // Текущая страница<br />
//print_r($hostel); // Массив данных для вывода на тикеты<br />
//echo "<br />&#8220;;</p>
<p>// Добавляем новую странцу<br />
$pdf->AddPage();<br />
// Рисуем прямоугольники &#8211; моя функция описание ниже<br />
//$pdf->pageRect();<br />
// Пишем текст на тикетах &#8211; моя функция описание ниже<br />
$pdf->printText($hostel);<br />
// После вывода очищаем массив с данными предыдущей страницы<br />
unset($hostel);<br />
}</p>
<p>// Рисуем pdf, параметр D &#8211; отправить в бороузер и предложить скачать.<br />
$pdf->Output(&#8220;&#8221;, &#8220;D&#8221;);<br />
[/cc]</p>
<p>Выше показан основной код, который создает новый объект класса PDF(), который в свою очередь является расширением (extends) класса FPDF нашей библиотеки, ниже приведен код моему класса, который непосредственно рисует закрашенный прямоугольники, выводит текст с переносом на следующую строки и перестройкой каждой последующей строки.</p>
<blockquote><p>Замечу, что при выводе текста с помощью функции <a href="http://fpdf.org/en/doc/write.htm">Write()</a> возникает проблема переноса текста на следующую строку. Перед тем как начать вывод нужно задать координаты вывода функцией <a href="http://fpdf.org/en/doc/setxy.htm">SetXY()</a>, а следовательно и контролировать эти координа при переносах строк.</p></blockquote>
<p>Показанный ниже код нужно вставить перед</p>
<p>[cc lang="php"]$pdf = new PDF();[/cc]</p>
<p>В коде я обрезал вывод метов класса PDF(), полный вывод каждого метода вы можете скачать одним файлом, в конце статьи.</p>
<p>[cc lang="php"]<br />
include(&#8220;fpdf.php&#8221;);<br />
class PDF extends FPDF {</p>
<p>// Рисуем зарашенные прямоугольники<br />
function pageRect(){<br />
$this->SetFillColor(153,204,255); // Задаем цвет фона<br />
// Рисем прямоугольники 3 колонки по 27 штук<br />
$k = 16;<br />
for ($i = 1; $i < 10; $i++){<br />
$this->Rect(8,$k,63,29.4,&#8217;FD&#8217;);<br />
$this->Rect(73.5,$k,63,29.4,&#8217;FD&#8217;);<br />
$this->Rect(139,$k,63,29.4,&#8217;FD&#8217;);<br />
$k = $k + 29.4;<br />
}<br />
}<br />
// Разбиваем длиные имена отелей<br />
function splitName($longname, $col_st, $b){<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;   // полную версию вы можете скачать ниже<br />
return $st;<br />
}</p>
<p>// Декодируем html мнемоники<br />
function decoder($text){<br />
$text = utf8_decode(html_entity_decode($text, ENT_QUOTES));<br />
return $text;<br />
}</p>
<p>// Печатаем текст на тикетах<br />
function printText ($hostel){<br />
$a = 18; // Задаем координаты смещения для каждой строки<br />
$b = 22;<br />
$c = 26;<br />
$d = 31;<br />
$e = 36;</p>
<p>for ($i = 0; $i < count($hostel); $i += 3){<br />
// Печатаем текст<br />
$this->SetXY(10,$a);<br />
$this->SetFont(&#8216;Arial&#8217;,'U&#8217;,6);<br />
$this->Write(4,$this->decoder(&#8217;451f.com.ua &#8211; записи разработчика&#8217;));</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.  // полную версию вы можете скачать ниже</p>
<p>$a = $a + 29.4; // Задаем приращение, высота прямоуголька 29.4 мм<br />
$b = $b + 29.4;<br />
$c = $c + 29.4;<br />
$d = $d + 29.4;<br />
$e = $e + 29.4;<br />
}</p>
<p>}<br />
}</p>
<p>[/cc]</p>
<p>Оставляйте ваши коментарии, и не забудьте подписать на <a href="http://451f.com.ua/feed/" title="RSS">RSS</a> и <a href="http://feeds.feedburner.com/451f" title="feedburner">e-mail</a> рассылку.</p>
<p>Скачать полную версию <a href="http://451f.com.ua/img/2007/10/tickets.txt" title="ticket.php">ticket.php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://451f.com.ua/create-pdf-file-on-php-part2/6/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Рисуем свой pdf файл на php, часть 1</title>
		<link>http://451f.com.ua/create-pdf-file-on-php/3</link>
		<comments>http://451f.com.ua/create-pdf-file-on-php/3#comments</comments>
		<pubDate>Thu, 25 Oct 2007 19:54:05 +0000</pubDate>
		<dc:creator>pilot</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[fpdf]]></category>
		<category><![CDATA[pdflib]]></category>
		<category><![CDATA[print pdf]]></category>

		<guid isPermaLink="false">http://451f/2007/10/25/%d0%a0%d0%b8%d1%81%d1%83%d0%b5%d0%bc-%d1%81%d0%b2%d0%be%d0%b9-pdf/</guid>
		<description><![CDATA[При работе над одним проектом возникла задача вывести тикеты (tickets) на предварительно порезанной самоклеющейся бумаге. Из трех решений данной задачи: Выводить простым html &#8216; лем (и конвертировать в pdf) Нарисовать gif картинку Нарисовать pdf был выбран вариант №3 &#8211; нарисовать pdf, исходя из того, что в первом варианте вывод на печать в разных броузеров значительно [...]]]></description>
			<content:encoded><![CDATA[<p>При работе над одним проектом возникла задача вывести тикеты (tickets) на предварительно порезанной самоклеющейся бумаге.</p>
<p>Из трех решений данной задачи:</p>
<ol>
<li> Выводить простым html &#8216; лем (и конвертировать в pdf)</li>
<li> Нарисовать gif картинку</li>
<li> Нарисовать pdf</li>
</ol>
<p>был выбран вариант №3 &#8211; <strong>нарисовать pdf</strong>, исходя из того, что в <em>первом варианте</em> вывод на печать в разных броузеров значительно отличается и выводить html, который требуется сформировать под вывод на печать основных броузеров, не целесообразно. <em>Второй вариант </em>- вывод в картинку, не подходил так как во время вывода изображения теряется качество выводимого текста.</p>
<p>Выбранный в итоге вариант рисования своего <strong>pdf</strong>, как оказалось на практике не так легко воплотить.</p>
<p>Первое, что нужно выбрать, библиотеку для рисования pdf.</p>
<p>При беглом обзоре с гуглом, попались:</p>
<ol>
<li><a href="http://www.pdflib.com/products/pdflib-family/"> pdflib</a></li>
<li><a href="http://www.fpdf.org/"> fpdf153</a></li>
<li><a href="http://html2fpdf.sourceforge.net">html2fpdf-3.0.2b</a> — конвертер из html</li>
<li><a href="http://www.digitaljunkies.ca/dompdf/"> dompdf-0.5.1</a> — конвертер из html</li>
</ol>
<p>Выбор был остановлен на fpdf153, почему?</p>
<p>Самый простой вариант, который меня устраивал  — это использовать <em>конвертер из html в pdf , </em>но полученный результат конвертирования меня не устроил, так как пердставленые бесплатные конвертеры могут корректно выполнять конвертацию только простых html файлов без использования блоков div. В основном простых таблиц обозначенных бордерами.</p>
<blockquote><p>Кого заинтересовали мои исследования в области конвертации из <strong>html</strong> в <strong>pdf</strong>, пишите в комментариях. Так как во время поиска конвертера я протестировал несколько коммерческих продуктов, которые при наличии средств можно использовать вместо того, чтоб заниматься конвертацией и доделкой бесплатных библиотек самому.</p></blockquote>
<p>Рисовалка pdf файлов <strong>pdflib </strong>доступная как модуль расширения <strong>php</strong> хорошо документированная, оказалась для меня не доступной так как хостиг провайдер заказчика, отказался добавлять эту библиотеку.  В итоге для работы я выбрал библиотеку <strong>fpdf</strong> последняя доступная версия 1.5.3 , сайт разработчика <a href="http://www.fpdf.org/">www.fpdf.org</a>  Русская документация по fpdf library качаем по ссылке <a href="http://www.fpdf.org/en/dl.php?id=92">http://www.fpdf.org/en/dl.php?id=92</a></p>
<p>С библиотекой все ясно, приступаем непосредственно к самому моменту рисования pdf файла, об этом во подробно во второй части&#8230;</p>
<blockquote><p>У кого есть личный примеры работы с <strong>fpdf</strong>, пишите свои примеры, буду рад разместить ваш опыт на страницах этого дневника.</p></blockquote>
<p>Не забудьте подписаться на <a href="http://451f.com.ua/feed/" title="RSS">RSS</a> и <a href="http://feeds.feedburner.com/451f" title="feedburner">e-mail</a> рассылку.</p>
]]></content:encoded>
			<wfw:commentRss>http://451f.com.ua/create-pdf-file-on-php/3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
