Есть зверская мысль сделать конвертатор из HTML & CSS в PDF. Работал с такой штукой в живую, я скажу это просто ахренительная штуковина. К сожалению позаимствовать не мог, т.к. собственность компании. Работало оно так - составляем полный HTML документ с любой комбинацией CSS - всё это парсится (внешние стили, inline css), формируется структура документа, обсчитывается позиционирование элементов по W3.org спецификации. Это подразумевает следующие части приложения: 1). HTML и CSS парсеры 2). Генератор PDF на основе tcpdf или Zend_PDF. Цель? Самообразование, шевеление мозгами, опыт. Прославимся в конце концов на хабре Что нужно учесть сразу (или точнее говоря - чем болела та тулза). 1). Memory usage. Из-за того, что писалось оно под PHP4 ещё и классы не отчищали данные, у меня получалось что каждый PDF долкумент жрал по 4.5 дополнительных мега памяти, что в итоге через 20-30 документов, генерируемых последовательно упирало меня в memory limit. 2). Процесс это не быстрый, так что стоит заложить зарание возможность генерировать много документов из одного HTML подстановкой данных в нужные места, что бы не парсить HTML каждый раз. Тем, кому интересно - отпишитесь. Через каких 3-4 дня можно будет связаться со всеми и обсудить что да как, и стоит ли игра свеч вообще.
флоппик Ответ таков: найди мне хоть один HTML2PDF на PHP. Я искал в гугле когда надо было. Часа 2. Не нашел ни одного. Всё или какие-то варианты через промежуточные форматы, либо та же TCPDF, в которой тебе в ручную надо рисовать грёбанный PDF - сваять шаблон на HTML куда быстрее В PDF при генерации будут и картинки автоматом вставлятся, через самый обычный <img> тег. Т.е. мысль в том, что бы полностью перевести HTML документ в PDF (исключение разве что <object>, который в PDF бессмыслены). Выглядеть в браузере будет немного не так как в документе, особенно в IE, но очень близко к тому, что в HTML в FireFox получается. Мне пришлось буквально чуть-чуть допилить после FF что бы в PDF получилось тютелька в тютельку. В чем круть идеи: опять же, в скорости выполнения задания. Не надо считать сколько pt надо отсчитать от верха, что бы правильно разместить элемент - парсер читает CSS и расчитывает позиции элементов в потоке.
Ах, да, я кстати, очень даже за написание, вообще-то. Просто для начала пытаюсь внести долю здоровой и не очень, критики.
С ходу что вижу: * Не полная поддержка CSS - margin, padding - отсутствуют * PHP4 всё ещё саппортит, следовательно не очень хорошо работает с памятью. * Не юзает встроенную в PHP поддержку PDF (что может быть куда быстрее чем pure PHP implementation) * Код - каша. Я прелагаю структурированный набор классов сделать. Я знаю, задача впринципе может и изобретение велосипеда, однако я не вижу достойных продуктов, которые были современными и достаточно продвинутыми. В конце концов можно продавать продукт если очень круто сделаем ))
ээ, ты хочешь написать полноценный парсер HTML на php? Ты маньяк! а нельзя как-нибудь дёргать какой-нить броузер и скиншотить результат?
Psih, велосипеды есть двигаталем прогресса, потому дерзай. Стоит попробовать. Но.. Что требуется от нас? Нужна критика, моральная поддержка, существенная помощь в написании 80% кода, или ты написал на форуме для того, чтобы мы тебя отговорили?
я так понимаю, цель сделать не псевдо-пдф документ, а основательно подойти и сделать документ именно в разметке пдф. Раз уж такой серьезный подход, то стоит действительно сделать какой то общий интерфейс, и независимый генератор - чтобы работа была расширяемой и легко потом можно было переквалифицировать на конвертирование и в другие форматы. PS. Я уже даже знаю, где это можно будет применить. Главное - будет ли он отображать background-image в css ? и под какой лицензией собираешься выпускать в свет?
TheShock Да, background-image тоже должен показывать. Т.е. идея в том, что бы полностью повторить HTML документ со всеми фишками CSS (ну ок, почти всеми - некоторые вещи в PDF просто не могут быть переведены). Mr.M.I.T. HTML парсеры и так написаны людьми, так что инфу надыбать и улучшить имплементацию - не сложно. Сложнее сделать все расчёты и правильно определить позиции 2all От вас нужно полноценное участие, т.к. такой проект мне одному не по силам, учитывая кол-во свободного времени. Скажем так, у меня есть идея по имплементации, как построить это внутренее, как оно должно работать, примерный API + я видел такую тулзу в действии. От вас - равноправное участие в проекте, т.е. написание самого кода, патчи, обсуждение реализаций и структуры приложения.
флоппик Давай подождём кто ещё подключится и тогда организуем всё действо, ок? Или у тебя другие предложения есть?
Нет, чем больше народу, тем больше шансов, что получится что то толковое. Меня искушает возможность все эти классы сделать малосвязными, и это пригодится не только для пдф, ящитаю. Опять таки, можно аккуратненький интерфейсик сделаьт, и генерить пдф или встроенными, или пхпшными альтернативами.. это тоже было бы вкусно.
флоппик У меня идея такова - есть два компонента - HTML и CSS парсер и PDF генератор. HTML & CSS парсер генерирует структуру, на подобие дерева или структуру вложенных классов, которые потом берёт PDF генератор и по своему обрабатывает. Таким образом потом можно тогда прикрутить какую угодно генерацию вместо PDF - хоть картинки рисуй Да, и интерфейс тоже гут - если нету php_pdf, то юзать скажем TCPDF
флоппик Так как-бы логично делать, иначе без разделения этих друх частей может получится полная бредятина, на подобие того линка, что ты выше давал. Каша там ещё та я бы сказал. Заодно можно ещё и сам HTML парсер заюзать будет для разобра данных от всяких WYSIWYG - потоковый HTML парсер это то, чего я тоже найти никак не мог. Вечно BBcode делаются через костыли
а можно и я что-нибудь попробую - в целях самообразования и, если получиться, вы потом где-нибудь внизу в углу напишите - Ах, забыли сказать - так есть такая штучка простенькая, так вот ее сделал тот-то...
Мой блог - веб-приложение, написанный на языке, предназначенном для веб-приложений. Обработка же HTML+CSS по стандартам есть в исходниках мозиллы, писанных на си, которые можно было бы использовать.
Ну так и нас, как бы, интересует широкодоступное использование для веба. Опять таки, никто не говорит про исключительно решение на PHP - каждый из компонентов может быть заменен, с написанием обертки, соответствующей интерфейсу.
Я думаю причина в том, что PHP здесь большая часть людей знает лучше других языков. флоппик, Psih, а Вам быдлокодер в команду нужен? Я бы взялся.
akrinel, я думаю, мы его в любом случае на гуглокод засунем, желающие внесут посильный вклад, да. Но психу и карты в руки =)
vasa_c Потому что генерировать из HTML PDF документы в Веб приложении удобнее на том-же языке, что и приложение. Не всегда это можно сделать на C++. Хотя как вариант можно сделать для проекта ещё и C++ вариант - вопрос только в том, кто будет это делать? Я с С++ не знаком, вообще. А когда всё написано, перенести на С++ знающему человеку куда легче, чем писать самому с 0. Прототипировать на PHP самое оно